Mål for INF1000. Repetisjon INF 1000 våren Representasjon av data. Programvareutvikling - oversikt

Like dokumenter
Repetisjon INF 1000 våren 2006

Blokker og metoder INF1000 (Uke 6) Metoder

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000 (Uke 4) Mer om forgreninger, While-løkker

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

INF1000 (Uke 6) Mer om metoder, tekster

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset:

INF1000 (Uke 6) Mer om metoder, tekster

Orakeltjeneste på Abel Hjelp til Obligatorisk oppgave 2. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. Rep: Metoder

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Forelesning inf Java 5

Forelesning inf Java 5

Forelesning inf Java 4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

INF1000 : Forelesning 4

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Blokker. Uke 4, INF 1000, 13 sept Løkker og arrayer. Eksempel. Deklarasjoner inne i blokker. Institutt for Informatikk Universitet i Oslo

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

Teste om to tekster er like. Inf1000 uke 6 26.sept Alfabetisk ordning. Inneholder en tekst en annen? Litt om tekster Metoder

Inf1000 uke 5 18.sept. 2007

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

En klasse er noe - en metode gjør noe (! / # <= (! * +!! ",-' %. "- -/ %.!#) )! " 0'%! * *$! "1-)) '' % '. 22!'( 7/ /! * 2 2! "*"% 8"%% 9 - -!

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

INF1000 : Forelesning 3

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

Java 4. Mer om easyio Mer om forgreninger Løkker. 7. september 2004

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

INF1000: Forelesning 4. Mer om arrayer Metoder

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

Dagens tema Kapittel 8: Objekter og klasser

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Forelesning inf Java 5

INF1000 : Forelesning 5

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Mer om uttrykk, terminal I/O, forgreninger. Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo

Mer om arrayer Metoder

INF1000: noen avsluttende ord

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator

Ole Christian Lingjærde, 12. september 2013

Forelesning inf Java 4

Oversikt. INF1000 Forelesning 6. Variable Deklarasjon. Variabel en plass i lageret int radius;

Oversikt. INF1000 Uke 5. Hva er for-løkker - repetisjon. Spørsmål forrige uke. Svar på spm. fra forrige uke. Litt mer om arrayer.

UNIVERSITETET I OSLO

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

INF 1000 høsten 2011 Uke 3 6. september

UNIVERSITETET I OSLO

Java 6. Eksempel med to-dimensjonal array Filbehandling Tekster

INF1000 Uke 4. Innlesning fra terminal. Uttrykk og presedens. Oversikt

Innhold uke 3. INF 1000 høsten 2011 Uke 3 6. september. Uttrykk. Variabel: En plass i hukommelsen

UNIVERSITETET I OSLO

Inf1000 (Uke 10) HashMap og ArrayList

INF1000: noen avsluttende ord

INF 1000 høsten 2011 Uke september

INF1000 Uke 5. Litt om objekter, filer med easyio, tekst

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Forelesning inf Java 3

INF1000: Forelesning 7

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

Eksempel: Body Mass Index (BMI)

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

UNIVERSITETET I OSLO

INF1000: Forelesning 7. Konstruktører Static

Læreboken på 45 minutter

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

UNIVERSITETET I OSLO

Oversikt. Uke 2, INF 1000, 30 aug Variable, tilordninger og uttrykk. Repetisjon: Java programmering

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

INF Uke 10. Ukesoppgaver oktober 2012

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Oversikt. Filer. Litt mer om tekster. INF1000 Uke 6. Lese og skrive fra/til fil. Eksempel. Vi importerer pakken easyio. Klassene In og Out i easyio

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

INF1000 : Forelesning 2

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

Forelesning inf Java 3

Enkle generiske klasser i Java

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Inf1000 uke sept 2011

Fullstendige programeksempler. INF1000 : Forelesning 2. Eksempel 1. Eksempel 2. Vi skal nå se på endel programeksempler.

UNIVERSITETET I OSLO

Gjennomgang av eksamen H99

Transkript:

Repetisjon INF 1000 våren 2007 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Anne Landro, Are Magnus Bruaset og Arild Waaler Mål for INF1000 Gi grunnleggende forståelse av noen sentrale begreper, problemstillinger og metoder innen informatikk Lære å programmere Gi noe innsikt i datamaskiners muligheter og begrensninger Lære noe om samfunnsmessige konsekvenser av bruk av informasjonsteknologi 21-05-2007 2 Programvareutvikling - oversikt Representasjon av data 1. Først har vi et problem vi skal løse (en oppgave) 2. Finn en fremgangsmåte (=algoritme) for problemet 3. Hvilke data beskriver problemet / algoritmen? 4. Skriv et (Java-)program, syntaktisk korrekt slik at kompilatoren ikke gir feilmeldinger 5. Test ut programmet, sjekk at det gir riktig svar Variabler - tre egenskaper: Et navn (ulikt alle andre variablers) En type (tekst, heltall, desimaltall, ) Et data-innhold, en verdi 21-05-2007 3 21-05-2007 4

Minnelokasjon Heltall og desimaltall (flyttall ) Datamaskiner håndterer disse på forskjellig måte Java-program Heltall er alltid eksakte, mens desimaltall har bare en viss nøyaktighet Variabel 21-05-2007 5 21-05-2007 6 Handlingssetninger, tilordning Addisjon (+) har mange virkemåter Tilordningsetninger (v.s. = h.s;) gir en ny verdi til en variabel På venstre side (v.s.) står navnet til en variabel Tegnet = leses: settes lik På høyre side (h.s.) står et regnestykke, verdien regnes ut Mellom to heltall gir + en heltallsaddisjon, 2 + 2 Mellom to flytende tall gir + en desimaltallsaddisjon, 2.5 + 3.14 Mellom et heltall og et flytende tall gir + en desimaltalls-addisjon: 2 + 3.14 Mellom to tekststrenger gir + en sammenskjøting (konkatenering) av strengene Hallo + verden 21-05-2007 7 21-05-2007 8

Konvertering Hvis nødvendig vil Java automatisk (implisitt) konvertere heltall til desimaltall Eksempler: double x = 7; Mer om konvertering Java vil ikke automatisk konvertere desimaltall til heltall, siden det generelt fører til en endring i verdien: int a = 7.15; // Ikke lov!! int a = 15; double x = a; double x = 15.6; int a = x; // Ikke lov!! double x = (7 + 14) * 3-12; int a = 3.14 * 7 / 5; // Ikke lov!! 21-05-2007 9 21-05-2007 10 Heltallsdivisjon Java konverterer ikke fra heltall til desimaltall når to heltall adderes, subtraheres, multipliseres eller divideres: 234 + 63 : heltall (int) 235-23 : heltall (int) 631 * 367 : heltall (int) 7 / 2 : heltall (int) Heltallsdivisjon Legg spesielt merke heltallsdivisjonen: Når to heltall divideres på hverandre i Java blir resultatet et heltall, selv om vanlige divisjonsregler tilsier noe annet. Dette kalles heltallsdivisjon, og resultatet er det samme som om vi fulgte vanlige divisjonsregler og så avrundet nedover til nærmeste heltall. Dvs (7/2) = = (int) (7.0/2.0) = = 3. 21-05-2007 11 21-05-2007 12

Tekster og klassen String En tekststreng er en sekvens av tegn (null, en eller flere), f.eks. * Kristina Hver tekststreng vi lager er et objekt av typen String Konkatenering Operatoren + har flere betydninger i Java: mellom to tall: addisjon mellom to tekster : tekstkonkatenering mellom tekst og annen type : tekstkonkatenering Eksempel på overlasting av metode 21-05-2007 13 21-05-2007 14 Eksempel Husk at uttrykk i Java beregnes fra venstre mot høyre: class Konkatenering { public static void main (String[] args) { System.out.println( Sum: + 2 + 3); System.out.println(1 + 2 + 3 + + 1 + 2 + 3); >java Konkatenering Sum: 23 6 123 Deler av en tekststreng Generelt: s.substring(index1, index2) Første posisjon som skal være med Siste del av en tekststreng: Første posisjon som ikke skal være med String s = Paris er hovedstaden i Frankrike ; String s1 = s.substring(6); // Nå er s1 tekststrengen er hovedstaden i Frankrike 21-05-2007 15 21-05-2007 16

Fra tall til tekst og omvendt Enkel if-setning For å konvertere fra tall til tekst: String s1 = String.valueOf(3.14); String s2 = String.valueOf('a'); String s3 = String.valueOf(false); String s4 = "" + 3.14 String s5 = "" + 'a'; String s6 = "" + false; if (logisk uttrykk){ /* Her kommer de instruksjonene som skal utføres når det logiske uttrykket er sant (true) */ For å konvertere fra tekst til tall: int k = Integer.parseInt(s); double x = Double.parseDouble(s); (og tilsvarende for de andre numeriske datatypene) 21-05-2007 17 21-05-2007 18 If-setning med else-gren If-setninger kan settes sammen if (logisk uttrykk){ /* Her kommer de instruksjonene som skal utføres når det logiske uttrykket er sant (true) */ else { /* Her kommer de instruksjonene som skal utføres når det logiske uttrykket er usant (false) */ if (x < 0) { System.out.print("Tallet er negativt"); else if (x == 0) { System.out.print("Tallet er null"); else { System.out.print("Tallet er positivt"); 21-05-2007 19 21-05-2007 20

Eksempel: Adgang til studier import easyio.*; class AdgangTilUniversitetet Løsning { public static void main (String [] args) { Problem: For å få adgang til universitetet i Ruritania må man oppfylle begge disse kravene: alder 18 karaktersnitt > 4.8 Lag et program som, gitt en persons alder og karaktersnitt, skriver ut på skjerm om personen får adgang til universitetet eller ikke. int alder; double karsnitt; Out skjerm = new Out(); In tast = new In (); skjerm.out( Alder: ); alder = tast.inint(); skjerm.out( Karaktersnitt: ); karsnitt = tast.indouble(); if (alder >= 18) { if (karsnitt > 4.8) skjerm.outln( Personen kan tas opp ); else skjerm.outln( Personen kan ikke tas opp ); else skjerm.outln( Personen kan ikke tas opp ); 21-05-2007 21 While-løkker Ferdig program while (logisk uttrykk) { setning 1; setning 2;... setning n; class TreGangen { public static void main (String[] args) { int k=1, svar; while (k <= 10) { svar = k * 3; System.out.println(k + " * 3 = " + svar); k = k + 1; 21-05-2007 23 21-05-2007 24

For-setninger En annen måte å få utført en instruksjon (eller blokk) mange ganger er ved hjelp av en for-setning (også kalt for-løkke): initialisering løkketest for (int i=1; i<=antall; i++) { <setning 1> <setning 2>... <setning n> løkkeoppdatering 21-05-2007 25 Hvordan for-setningen virker int i = 1 i++ i <= antall? <setning 1> <setning 2>... <setning n> 21-05-2007 26 JA NEI avslutt for-løkka Variabler Hittil har vi sett på variable som kan holde en enkelt verdi: en int-variabel har plass til ett heltall en double-variabel har plass til ett desimaltall en String-variabel har plass til en enkelt tekststreng osv. Arrayer Arrayer er "variable" som kan holde på mange verdier: en int-array har plass til mange heltall en double-array har plass til mange desimaltall en String-array har plass til mange tekststrenger osv. 21-05-2007 27 21-05-2007 28

Arrayer Deklarere og opprette arrayer Verdiene som ligger i en array har hver sin posisjon (= indeks): 0, 1, 2,..., K-1 hvor K = lengden til arrayen Deklarasjon: Oppretting: datatype[] arraynavn; f.eks. int, double, boolean eller String En array med lengde 4 kan visualiseres slik: arraynavn = new datatype[k]; // K er ønsket lengde arraynavn = new datatype[]{verdi1, verdi2,, verdik; 0 1 2 3 I hver av disse boksene er det plass til en verdi Kombinert: datatype[] arraynavn = new datatype[k]; datatype[] arraynavn = {verdi1,, verdik; 21-05-2007 29 21-05-2007 30 Verdiene i en array Anta at vi har deklarert og opprettet følgende array: int[] tlf = new int[600]; For å få tak i de enkelte verdiene i arrayen: tlf[0], tlf[1], tlf[2],..., tlf[599] For å få tak i lengden på arrayen: tlf.length // NB: ingen parenteser til slutt 21-05-2007 31 Flerdimensjonale arrayer Vi kan også deklarere todimensjonale (og høyeredimensjonale) arrayer. Eksempel: int[][] soltimer = new int[12][31]; Resultat: soltimer 21-05-2007 32 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4... 30

Blokker og metoder En blokk er en samling instruksjoner omgitt av krøllparenteser: { instruksjon 1; instruksjon 2;... instruksjon n; Alle steder i et Java-program hvor det kan stå en instruksjon, kan vi om ønskelig i stedet sette inn en blokk Metoder En metode er essensielt en navngitt blokk med instruksjoner som vi kan få utført hvor som helst i et program ved å angi metodens navn Beskrivelsen av hva metoden skal hete og hvilke instruksjoner som skal ligge i metoden kalles en metode-deklarasjon. 21-05-2007 33 21-05-2007 34 Metoder 3 typer variable: Klassevariable Forteller at dette er en "klasse-metode" static returverditype metodenavn (parametre) { instruksjon 1; instruksjon 2; instruksjon n; Beskrivelse av hva slags output metoden gir, f.eks. void, int, double, char,... Et navn som du velger Beskrivelse av hva slags input metoden skal ha - gis i form av variabel-deklarasjoner separert av komma Variable som er deklarert på klassenivå, utenfor metoden (Også objektvariable) 21-05-2007 35 21-05-2007 36

3 typer variable: Lokale variable Variable som deklareres inne i en metode Slike variable er definert fra og med der deklarasjonen gjøres og til slutten av blokken de er deklarert i 3 typer variable: Parametre Variable som deklareres i hodet på metoden Slike variable er definert i hele metodekroppen 21-05-2007 37 21-05-2007 38 Viktig detalj Metode uten parametre og returverdi Følgende metode skriver ut en ordremeny på skjermen: Ved gjentatte kall på en metode er det et nytt sett med lokale variable og parametre som lages hver gang static void skrivmeny () { System.out.println( Lovlige kommandoer: ); System.out.println( -------------------- ); System.out.println( 1 Registrer ny student ); System.out.println( 2 Søk etter student ); System.out.println( 3 Lag liste ); System.out.println( 4 Avslutt ); System.out.println( -------------------- ); 21-05-2007 39 Merk: vi kan hvor som helst i metoden gi instruksjonen return; som avslutter utførelsen av metoden og returnerer eksekveringen til kallstedet 21-05-2007 40

Metode med returverdi Følgende metode leser et positivt tall fra terminal og returner det til kallstedet: static double lespositivttall () { In tastatur = new In(); double x; do { System.out.print("Gi et positivt tall: "); x = tastatur.indouble(); while (x <= 0); return x; Merk: vi kan hvor som helst i metoden gi instruksjonen return <uttrykk>; som avslutter utførelsen av metoden og returnerer til kallstedet med verdien til det angitte uttrykket (verdien må være av typen double i dette tilfellet) 21-05-2007 41 Parametre og argumenter class Eksempel { public static void main (String[] args) { minmetode(3.14, 365); Argumenter static void minmetode (double x, int y) {... Parametre Merk: et annet navn for argumenter er aktuelle parametre, og et annet navn for parametre er formelle parametre 21-05-2007 42 Metode med parameter og returverdi Overlasting av metoder Følgende metode finner summen av elementene i en double-array: static double finnsum (double[] x) { double sum = 0.0; for (int i=0; i<x.length; i++) { sum += x[i]; return sum; static int sum (int x, int y) { return x + y; static double sum (double x, double y) { return x + y; 21-05-2007 43 21-05-2007 44

Objektorientering - oppsummering Klasser og objekter Hva er klasser og objekter? Pekere og tilgang til objekter Klasse- og objektvariable Konstruktører Filer UML Beskyttelse Klassene ArrayList og HashMap Det aller viktigste Klasser og objekter Klasser En klasse er en mal/mønster for objekter. Det finnes alltid nøyaktig ett eksemplar av hver klasse når programmet kjøres. Eksempel: class Kjøretøy {... Objekter Et objekt er en instans laget utifra en klasse. Når programmer startes, finnes ingen objekter (med unntak av systemobjekter). Vi kan lage så mange objekter vi vil. Eksempel Kjøretøy minbil = new Kjøretøy() Objekter som ingen bryr seg om (dvs peker på), blir fjernet automatisk. 21-05-2007 45 21-05-2007 46 Pekere til objekter For å få tilgang til objektene må vi ha pekere: class Stasjon { String navn; int moh; // meter over havet Stasjon maj, nat; Tilgang til innmaten i objekter Når vi har en peker til et objekt, kan vi få tilgang til innmaten (dvs data og metoder) med et. : nat.navn = "Nationaltheateret"; nat.moh = 4; maj = new Stasjon(); nat = new Stasjon(); 21-05-2007 47 21-05-2007 48

Objekt- og klassevariable Variable i en klassedeklarasjon vil forekomme i alle objekter. De er objektvariable. Unntak: Om det står static foran, vil de kun finnes i ett eksemplar, nemlig i klassen. De er klassevariable. class Scenic { static int antlaget; String eier; Spesielle variable (finnes i alle klasser): this betegner objektet selv. null betegner ingenting. Konstruktører Med konstruktører kan man lage objekter som initieres med parametre: class Dato { int dag, måned, år; Dato (int d, m, å) { dag = d; måned = m; år = å; Dato idag = new Dato(24, 5, 2004); Uten en slik konstruktør vil Java sette inn en tom en: Dato ( ) { 21-05-2007 49 21-05-2007 50 Beskyttelse Alt i en klasse (og objekt) kan beskyttes: private Elementer er usynlige utenfra. protected Elementer er kun synlig i subklassser. (Omtales ikke i dette kurset.) public Elementer er synlig overalt. ingenting Elementer er synlig i samme pakke. (Omtales ikke i dette kurset.) Klassen ArrayList Klassen ArrayList fungerer nesten som vanlige arrayer. Vi må hente inn klassen fra biblioteket: import java.util.arraylist; import java.util.*; Objekter opprettes med new: ArrayList a = new ArrayList(); 21-05-2007 51 21-05-2007 52

Klassen ArrayList Klassen HashMap java 1.4 Vi legger inn objekter med metoden add: a.add(p); a.add(n, p); NB! Vi får bare legge inn i posisjoner som er i bruk, eller én høyere! Vi henter elementer med metoden get: p = (MyClass)a.get(n); Klassen importeres med Objekter opprettes med Elementer legges inn med import java.util.hashmap; import java.util.*; HashMap map = new HashMap(); map.put(nøkkel, objekt); NB! Vi må angi objektets klasse. Antall elementer får man med metoden size: len = a.size(); En nøkkel kan være et vilkårlig object; i INF1000 vil det alltid være en String. Vi henter ut objekter med obj = (MyClass)map.get(nøkkel); NB! Vi må angi objektets klasse. 21-05-2007 53 21-05-2007 54 Klassen HashMap java 1.5 Løkke gjennom elementer Importere HashMap: import java.util.hashmap; import java.util.*; Opprette HashMap: HashMap <Nøkkeltype, Objekttype> map = new HashMap <Nøkkeltype, Objekttype>(); Angir hvilken type nøklene og objektene tilhører Legge inn i HashMap: map.put(nøkkel, objekt); Hente ut fra HashMap: Myclass m = map.get(nøkkel); Trenger ikke angi objektets klasse I en array kan man gå gjennom alle elementene med en forløkke: for (int i = 0; i < a.length; ++i)... a[i]... Det sammen kan man med en ArrayList: for (int i = 0; i < a.size(); ++i)... a.get(i)... Med en HashMap bruker man klassen Iterator: Iterator it = map.keyset().iterator(); while (it.hasnext()) {... (Xxxx)it.next()... 21-05-2007 55 21-05-2007 56

Java 1.5 Java 1.5 og iterator: Iterator <String> it = map.keyset().iterator(); while (it.hasnext()) {... it.next()... Java 1.5 og forløkker: for(myclass m:map.values()){ m er her peker til objektet Pakken easyio In er en klasse for å lese fra tastatur eller fil. inline() leser neste linje. inchar() leser neste tegn. endoffile() sjekker om slutt på filen. inint leser et heltall. indouble() leser et flyt-tall. inword() leser neste ord (omgitt av blanke). intext() leser alle ord igjen på linjen. lastitem() sjekker om flere ord å lese. close() lukker filen. Out er en klasse for skriving til skjerm eller fil. out(... ) skriver ut en tekst (som kan være satt sammen av mange deler med +). outln(... ) er som out men avslutter linjen etterpå. out(x, w) skriver double-tallet x med w desimaler. close() lukker filen. 21-05-2007 57 21-05-2007 58 UML - klassediagrammer UML forhold mellom klasser 1 Konto Objekter laget av ulike klasser kan ha et visst forhold til hverandre: Tegnet foran et element angir beskyttelsen: en private definisjon + en public definisjon # en protected definisjon ~ en pakke-definisjon -saldo +eier +adresse +settinn() Student Vi kan også angi et mengdeforhold: Student Lovlige tall er * vilkårlig mange (0, 1, 2,...) 3 nøyaktig 3 3..5 3, 4, 5 1..* minst 1 (1, 2, 3,...) -har tatt - -har tatt - 1 * Eksamen Eksamen 21-05-2007 59 21-05-2007 60

UML forhold mellom klasser 2 Hvordan finner man det riktige tallet? Anta at du står i et tilfeldig objekt av klassen og ser (langs forbindelsen) på den andre klassen: Hvor mange objekter av det andre klassen ser du da på et gitt tidspunkt? Dette tallet noteres lengst fra deg. Så flytter du deg til den andre klassen og gjentar det hele. Objektdiagrammer 1 petter: Student Vi kan også legge inn opplysninger om objektvariablene og deres verdi: petter: Student navn = Per Ås alder = 21 Vi kan angi at det finnes mange objekter av samme klasse: : Student 21-05-2007 61 21-05-2007 62 Objektdiagrammer 2 Pekere Vi kan angi hvilke pekere som peker hvor: Arrayer Vi kan også angi arrayer (med pekere): Tabeller Det finnes et eget UML-symbol for tabeller (HashMap-er). Pensum V2007 Rett på Java, 2005; Kap 1-9, 12 På nettet: Arne Maus: Informasjonsteknologi, vitenskap og samfunnsmessige virkninger Personopplysningsloven, http://www.datatilsynet.no/ 21-05-2007 63 21-05-2007 64

Det viktigste Det viktigste vi håper dere har lært i INF1000: Forstå hvordan man programmerer en datamaskin. Forstå hvordan man bygger opp et program med klasser og objekter og kunne illustrere dette med UML-diagram. Kunne skrive enkle programmer i Java. Kunne finne algoritme for å løse enkle problemer og så formulere algoritmen i Java. 21-05-2007 65