Programmering i Java versjon 2001-05-16 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
Samarbeid mellom objekter
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
En gang til!? .
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
Kap 02 Tabeller / Tabelloperasjoner. Enkeltvariable Les inn nedbørmengde for årets 12 måneder: Les n1 Les n2 … Les n12 n1 n2 n12.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
INF Objektorientert programmering
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
INF1000 (Uke 12) Sortering og eksamensoppgaver Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Variabler, datatyper og uttrykk
IS-102 Interaksjon med objekter
Utskrift av presentasjonen:

Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9 Tabeller av primitive datatyper Datastrukturen tabellside 2-4 Å kopiere en tabellside 5-7 Klassen Manedside 8 Sorteringside 9-12 Tabell som argumentside 13 Søkingside Klassen java.util.Arraysside 16 Todimensjonale tabellerside Mer enn to dimensjonerside 19-21

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 2 Behov for datastrukturen tabell En datastruktur er en samling data lagret i primærminnet under ett navn. Et objekt er en datastruktur. En tabell er en datastruktur som kan brukes dersom alle dataene tilhører samme datatype. Eksempel: Nedbøren som faller hver dag i en måned. Hvordan deklarere objektvariablene? private String mndNavn; private int nedbør1; private int nedbør2; private int nedbør3; private int nedbør4;..... private int nedbør31; Maned mndNavn: String nedbør[28..31]: int finnMaksimum finnMinimum finnGjSnitt

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 3 Datastrukturen tabell Vi deklarerer en tabell: –int[] mars = new int[31]; int[ ] mars = new int[31]; mars 0010 [0] [1] [2] [3] [27] [28] [29] [30] indeks lengde

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 4 Å bruke en tabell Vi kan få tak i hvert enkelt element ved indeksering: –mars[0] = 20; –mars[15] = 30; –int sum = mars[0] + mars[1] + mars[2]; Tabellens lengde er gitt av uttrykket mars.length. Første element har alltid indeks 0, siste element indeks (length-1). Bruk av ugyldig indeks kaster unntaket ArrayIndexOutOfBoundsException. Dersom vi er usikre, må vi bruke en if-setning der vi kontrollerer indeksen før vi bruker den: –if (indeks >= 0 && indeks < mars.length) tall = mars[indeks]; Summerer all nedbør i mars: int sumMars = 0; for (int i = 0; i < mars.length; i++) sumMars += mars[i]; Vi kan initiere en tabell samtidig med deklarasjonen: –int[] enUke = {4, 5, 6, 7, 1, 2, 3}; // lengden blir 7 Dersom en tabell ikke initieres på denne måten, får alle elementene verdien 0. Gjør alle oppgavene side 232

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 5 Å kopiere en tabell Hva med å bruke tilordningstegnet? Fungerer ikke…vi får to referanser til samme tabell. int[] tab1 = {1, 4, 6, -2}; int[] tab2 = {7, 14, -6, 0}; tab1 tab2 Etter setningen: tab2 = tab1; tab1 tab2

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 6 Må kopiere en tabell element for element Gjør oppgave 1 side 234. int[] tab1 = {1, 4, 6, -2}; int[] tab2 = {7, 14, -6, 0}; tab1 tab tab1 tab2 Kopierer element for element: for (int i = 0; i < tab1.length; i++) { tab1[i] = tab2[i]; } Før kopiering: Etter kopiering :

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 7 Vi kan bruke System.arraycopy() til å kopiere tabeller int[] tab1 = {1, 4, 6, -2}; int[] tab2 = {7, 14, -6, 0}; tab1 tab2 Etter setningen: System.arraycopy(tab1, 1, tab2, 2, 2); tab1 tab2 [0] [1] [2] [3]

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 8 Klassen Maned Vis programliste 9.1 side Gjør oppgave 1 og 2 side 239. Maned mndNavn: String nedbør[28..31]: int finnMaksimum finnMinimum finnGjSnitt

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 9 Sortering Eksempler: –rangering av deltakerne i en konkurranse –sortering av navn til en telefonliste –ordning av kommuner etter prisen på kommunale tjenester Skiller mellom stigende sortering og synkende sortering. Forutsetninger: –plass til alle dataene som skal sorteres i primærminnet –dataene er tall eller tegn (’0’-’9’, ’a’-z’), dvs. de tilhører en primitiv datatype Kan foreløpig ikke sortere for eksempel strenger (kommer i kap. 10). Mange ulike sorteringsalgoritmer, vi skal se på ”sortering ved utvelgelse”.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 10 Sortering ved utvelgelse for (start = 0; start < tabell.length; start++) { finn indeksen til minste element i området mellom indeksene start og tabell.length - 1 bytt om minste element med elementet på plass start } før start etter første runde ferdig

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 11 Metoden sorterHeltallstabell - en klassemetode /* * Sorter.java E.L * */ package mittBibliotek; public class Sorter { public static void sorterHeltallstabell(int[] tabell) { for (int start = 0; start < tabell.length; start++) { int hittilMinst = start; for (int i = start + 1; i < tabell.length; i++) { if (tabell[i] < tabell[hittilMinst]) hittilMinst = i; } int hjelp = tabell[hittilMinst]; tabell[hittilMinst] = tabell[start]; tabell[start] = hjelp; } /* En annen sorteringsmetode ligger også i denne klassen. Se kapittel 10. */ }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 12 Eksempel på bruk av metoden Sorter() import mittBibliotek.*; class TestSorter { public static void main(String[] args) { int[] test = {3, 4, -5, 13, 10, 0, 8, -2, 22, 15, 11, 9, 17}; Sorter.sorterHeltallstabell(test); // klassenavnet foran metode-navnet System.out.println("Sortert tabell: "); for (int i = 0; i < test.length; i++) System.out.print(test[i] + " "); System.out.println(); } Hvis vi ønsker å sortere desimaltall, må vi lage en egen metode for denne datatypen.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 13 Tabell som argument Tabellnavnet er en referanse. En tabell som argument betyr at vi sender over en referanse til tabellen, og metoden jobber med de samme tabellelementene som klienten: Gjør oppgave 3 side test klient tabell sorterHeltallstabell Metodekall: Sorter.sorterHeltallstabell(test); Ved kallet skjer følgende bak kulissene: int[] tabell sorterHeltallstabell = test klient

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 14 Søking Å søke i en tabell betyr å finne det eller de elementene som tilfredsstiller bestemte kriterier. Eksempel: Vi oppgir en verdi og finner indeksen til ett eller alle elementene som er lik denne verdien. Må ta hensyn til at det vi leter etter, kanskje ikke finnes i det hele tatt. Eksempler på søk i programliste 9.1: –finnAntTørreDager() –finnDgMaks()

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 15 Å programmere søk etter en bestemt verdi Finner indeksen til en dag med en bestemt nedbørmengde: public int finnDag(int verdi) { for (int i = 0; i < nedbør.length; i++) { if (nedbør[i] == verdi) return i; // verdi funnet } return -1; // verdi ikke funnet } Dersom vi ikke skal returnere verdien: int dagNr = 0; while (dagNr < nedbør.length && nedbør[dagNr] != verdi) dagNr++; if (dagNr < nedbør.length) {...gjør det som skal gjøres hvis verdien er funnet... } else {...gjør det som skal gjøres hvis verdien ikke er funnet... } Kontrollerer indeksen før den brukes! (utnytter at Java bruker teknikken ”forkortet beregning” ved utregning av logiske uttrykk) Gjør oppgave 1 side 244.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 16 Klassen java.util.Arrays Tilbyr klassemetoder for å håndtere tabeller Kaster unntak, se online API-dokumentasjonen I metodehodene nedenfor er datatype en primitiv datatype Sortering –static void sort(datatype[] tab) –static void sort(datatype[] tab, int fraIndeks, int tilIndeks) Søking, forutsetter at tabellen er sortert på forhånd –static int binarySearch(datatype[] tab, datatype søkeverdi) Fyller hele eller deler av en tabell med en bestemt verdi –static void fill(datatype[] tab, datatype verdi) –static void fill(datatype[] tab, int fraIndeks, int tilIndeks, datatype verdi) Sammenligne tabeller (returnerer true hvis lik lengde og likt innhold) –static boolean equals(datatype[] tab1, datatype[] tab2) Gjør oppgave 2 side 246.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 17 Behov for en todimensjonal tabell Salgsdata for hver dag i et år (52 uker, 5 dager pr uke) kan framstilles på følgende måte: dag 0dag 1dag 2dag 3dag 4 uke uke uke uke 3 uke 4 uke uke 51 Oppgave: Hvilke tjenester bør et objekt som inneholder denne informasjonen, tilby sine klienter?

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 18 En todimensjonal tabell En todimensjonal tabell har linjer og kolonner. Hver linje er å betrakte som en endimensjonal tabell med følgende navn: salg[0], salg[1], salg[2], salg[3]. Eksempler: –salg[1][3] = 400; –int salget = salg[0][4]; –int sum = salg[3][0] + salg[3][1]; Vis programliste 9.3 side salg[0] salg[1] salg[2] salg[3] salg[1][3] salg[3][4] int[ ][ ] salg = new int[4][5]; // 4 uker, 5 dager pr. uke Gjør oppgave 1 og 2 side 252.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 19 Mer enn to dimensjoner Skal registrere salgsdata pr selger: dag nr uke nr selger nr 0 selger nr 1 selger nr 2 int[][][] salg = new int[3][4][5] antSelgere antUker antDager salg[2][2][4] salg[0][0][0]

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 20 Behandling av den tre-dimensjonale tabellen salg Hvor mye har selgeren med indeks selgernr solgt for i uken med indeks ukenr? int sum = 0; for (int i = 0; i < salg[selgernr][ukenr].length; i++) { sum += salg[selgernr][ukenr][i]; } Hvor mye har selgeren med indeks selgernr solgt for totalt? int sum = 0; for (int ukenr = 0; ukenr < salg[selgernr].length; ukenr++) { for (int dagnr = 0; dagnr < salg[selgernr][ukenr].length; dagnr++) { sum += salg[selgernr][ukenr][dagnr]; } Hva er totalsalget? int sum = 0; for (int selgernr = 0; selgernr < salg.length; selgernr++) { for (int ukenr = 0; ukenr < salg[selgernr].length; ukenr++) { for (int dagnr = 0; dagnr < salg[selgernr][ukenr].length; dagnr++) { sum += salg[selgernr][ukenr][dagnr]; }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 9, side 21 Flerdimensjonale tabeller er lite brukt i objektorientert programmering Vi trenger å bruke flerdimensjonale tabeller dersom vi skal behandle dataene i flere dimensjoner. Ellers lager vi heller tabeller av objekter, der hvert objekt inneholder en tabell med tilleggsinformasjon knyttet direkte til tabellen. januar februar mars desember 1995 januar februar mars desember 1996 januar februar mars desember 1997 statistikk