Løsningsforslag, inf101, våren 2001

Størrelse: px
Begynne med side:

Download "Løsningsforslag, inf101, våren 2001"

Transkript

1 Løsningsforslag, inf101, våren 2001 Anders Brunland Oppgave 1 (15%) a) Navn på søker trenger ikke være med i sak-objektet siden den kan hentes fra det første dokumentet i saken. Variabelen FRIST er strengt tatt ikke en objektvariabel siden den er gjort statisk. Dermed blir variablene som følger: 4 class Sak { 5 6 static int FRIST = 90; // Ant. dager for behandling 7 String saksnavn; // Entydig saksnavn 8 Dokument sdok; // 1. dok. i saken. 9 int regdato; // Dato for sak 10 int behandlingsfrist; // Dato for frist 11 int avslutningsdato = 0; // Faktisk avslutningsdato 12 Behandler sbehandler; // siste saksbehandler 13 HashMap behandlere = new HashMap(); // alle saksbehandlere 14 HashMap dokumenter = new HashMap(); // alle dokumenter b) I tillegg til en sak-klasse trengs en klasse som representerer saksbehandler, en klasse som representerer dokumenter, og tilsist en klasse som styrer det hele. 3 class Behandler { 4 5 final static int maxantsaker = 10; // Max ant. saker for en saksbehandler 6 String navn; // Navn til saksbehandler 7 Sak[] saker = new Sak[maxAntSaker]; // Saker under behandling 8 int antsaker = 0; // Antall saker under behandling 9 int totantsaker = 0; // Totalt ant. behandlede saker 10 HashMap tidligeresaker = new HashMap(); // Liste med behandlede saker 1

2 4 class Dokument { 5 6 String filnavn; // Filnavn til dokument 7 int innkommendato; // Inkommen dato for dokument 8 String avsender; 9 String adressat; 10 String saksnavn; / Entydig, samsvarer med sak. Settes idet en sak 11 blir tildelt dette dokumentet. 12 / 4 class Register { 5 6 HashMap saker = new HashMap(); // alle saker 7 HashMap behandlere = new HashMap(); // alle ansatte 8 HashMap dokumenter = new HashMap(); // alle dokumenter c) Ett objekt av klassen Register, flere objekter av de andre klassene. Oppgave 2 (10%) Det er to forhold det er naturlig å representere med en array (siden disse er faste størrelser). Forholdene er: i) Register - Ansatte. I teksten er det oppgitt at det er seks ansatte på kontoret. ii) Saksbehandler - saker under behandling. En saksbehanlder kan maksimalt ha ti saker under behandling. I dette løsningsforslaget er det forholdet mellom saksbehandler og saker under behandling som er representert med en array. Det gir følgende klasse/objekt diagram ( på neste side): 2

3 3

4 Oppgave 3 (10%) Sak: 18 Sak(Dokument sdok, Behandler b) { saksnavn = nyttsaksnavn(); 21 this.sdok = sdok; 22 regdok(sdok); 23 regdato = idag(); 24 behandlingsfrist = leggtildager(frist); 25 sbehandler = b; 26 sbehandler.registrersak(this); 27 behandlere.put(sbehandler.getnavn(), sbehandler); 28 System.out.println("Saksnavn: " + getsaksnavn()); 29 } Dokumenter: 14 Dokument(String navn) { 15 filnavn = navn; 16 // evt. lese resten av objektvariablene fra filen. 17 } Behandler: 12 Behandler(String navn) { 13 this.navn = navn; 14 } Register: Inneholder kommandoløkka som driver programmet. 23 Register() { 24 int valg = 0; // Les ansatte og saker fra fil. 27 behandlerefrafil(); 28 sakerfrafil(); do { 31 meny(); 32 System.out.print("Ditt valg: "); 33 valg = stdin.inint (); switch (valg) { // Fra oppgave 5: 38 case 1: nysak(); break; 39 case 2: nyttdok(finnsak()); break; 4

5 40 case 3: skiftbehandler(); break; 41 case 4: avsluttsak(); break; 42 case 5: status (); break; // Fra oppgave 6: 45 case 6: snitt (); break; 46 case 7: oversikt (); break; // Fra oppgave 7: 49 case 8: overskridelser(); break; case 9: System.out.println("Takk for denne gang."); break; 52 default : System.out.println("Ukjent valg"); break; } } while (valg!= 5); // end do while } Oppgave 4 (15%) a) I klassen Register: 91 void behandleretilfil() { 92 Ut fut = new Ut(filBehandlere); 93 Behandler b; Iterator i = behandlere.values().iterator(); 96 while (i.hasnext()) { 97 b = (Behandler) i.next(); 98 fut.outstringln(b.getnavn()); 99 } fut.close (); 102 } 106 void behandlerefrafil() { 107 String navn; Inn fin = new Inn(filBehandlere); 110 while (!fin.endoffile()) { 111 navn = fin.instringln(); 112 behandlere.put(navn, new Behandler(navn)); 113 } 114 } 5

6 Hjelpemetode i Behandler 18 String getnavn() { 19 return navn; 20 } b) I klassen Register: 118 void sakerfrafil() { 119 Inn fin = new Inn(filSak); int antsaker = fin.inint(); 122 for (int i = 0; i < antsaker; i++) { 123 new Sak(fin, saker, behandlere, dokumenter); 124 } 125 } Og i klassen Behandler: 25 void registrersak(sak s) { 26 saker[antsaker++] = s; 27 totantsaker++; 28 } Ny konstruktør for klassen Sak: 34 Sak(Inn infil, HashMap allesaker, HashMap allebehandlere, 35 HashMap alledokumenter) { saksnavn = infil.instringln(); 38 regdato = infil.inint (); 39 avslutningsdato = infil.inint(); 40 int antdok = infil.inint (); 41 Dokument d; for (int i = 0; i < antdok; i++) { 44 d=new Dokument(infil, alledokumenter); 45 } int antbehandlere = infil.inint(); // Les 1. behandler: 50 String navn = infil. instringln(); 51 sbehandler = (Behandler) allebehandlere.get(navn); 52 sbehandler.registrersak(this); 53 behandlere.put(sbehandler.getnavn(), sbehandler); // Les de andre behandlerne. Begynner tellingen fra 1 siden 56 // en behandler allerede er registrert. 57 for (int i = 1; i < antbehandlere; i++) { 6

7 58 navn = infil.instringln(); // Legg merke til at casting til Behandler ikke er trengs 61 // siden en HashMap tar Object som argument. Ny konstruktør for klassen Dokument (ikke skrevet, i henhold til oppgaveteksten): 19 Dokument(Inn frafil, HashMap alledokumenter) { 20 // leser fra fil og legger seg inn i listen over alle dokumenter. 21 } Oppgave 5 (20%) a) I klassen Register: 132 void nysak() { 133 Behandler behandler = null; 134 Behandler tmp; 135 String filnavn; 136 Dokument dok; 137 Sak sak; // Finner en ledig behandler. 140 int minst = Behandler.maxAntSaker; 141 Iterator it = behandlere.values().iterator(); 142 while (it.hasnext()) { 143 tmp = (Behandler) it.next(); 144 if ( tmp.antsaker() < minst) { 145 behandler = tmp; 146 minst = behandler.antsaker(); 147 } 148 } // Hvis ingen saksbehandlere er ledig avsluttes metoden, 151 // og saken avvises. 152 if ( minst == Behandler.maxAntSaker) { 153 System.out.println("Beklager ingen ledige saksbehandlere."); return; 156 } // Filnavn: 159 System.out.print("Filnavn?: "); 160 filnavn = stdin.instringln(); 161 dok = new Dokument(filnavn); 162 dokumenter.put(filnavn, dok); 7

8 // Lager ny sak. 165 sak = new Sak(dok, behandler); 166 saker.put(sak.getsaksnavn(), sak); } I klassen Behandler: 25 void registrersak(sak s) { 26 saker[antsaker++] = s; 27 totantsaker++; 28 } I klassen Sak: 70 void regdok(dokument d) { 71 d.settsaksnavn(saksnavn); 72 dokumenter.put(d.getnavn(), d); 73 } Og, til slutt, i klassen Dokument: 23 void settsaksnavn(string snavn) { 24 saksnavn = snavn; 25 } b) I klassen Sak benyttes metoden regdok(dokument d) fra oppgave 5a, på denne siden. I klassen Register: 172 // Returnerer peker til dokumentet som blir registrert. Dette benyttes 173 // i metoden avsluttsak. 174 Dokument nyttdok(sak sak) { 175 String doknavn; 176 Dokument dok; 177 Behandler behandler; if (sak ==null) { 180 return null; 181 } System.out.print("Filnavn til dokument: "); 184 doknavn = stdin.instringln(); dok = new Dokument(doknavn); 187 dokumenter.put(doknavn, dok); sak.regdok(dok); return dok; 8

9 } c) I klassen Register: 197 void skiftbehandler() { 198 Behandler b; 199 Sak sak = finnsak(); if (sak ==null) { 202 return; 203 } System.out.print("Ny saksbehandlers navn: "); 206 b = (Behandler) behandlere.get(stdin.instringln()); // Sjekker mot diverse ulovligheter og avbryter evt. metoden (med 209 // return) if (b == null) { 212 System.out.println("Finnes ikke i listen over saksbehandlere."); return; } else if (b.antsaker() == Behandler.maxAntSaker) { 217 System.out.println("Saksbehandler har allerede " Behandler.maxAntSaker " saker til behandling."); 220 return; } else if ( sak.harbehandler(b)) { 223 System.out.println("Saksbehandleren har allerede behandlet saken."); return; } //... slik at her har vi en sak som kan skifte til 230 // saksbehandler b. 231 sak.skiftbehandler(b); 232 } 372 Sak finnsak() { System.out.print("Sak nr: "); 375 Sak sak = (Sak) saker.get(stdin.instringln()); 376 if (sak ==null) { 9

10 377 // Ikke en del av oppgaven, men mye lettere under 378 // testing av programmet. 379 System.out.println("Ukjent saksnummer. Registrerte saker:"); Iterator i = saker.values().iterator (); 382 while (i.hasnext()) { 383 System.out.println(((Sak) i.next()).getsaksnavn()); 384 } return null; } return sak; } I klassen Sak: 80 sbehandler.fjernsak(this); 81 } sbehandler = nybehandler; 84 behandlere.put(sbehandler.getnavn(), sbehandler); 85 sbehandler.registrersak(this); 86 } Og i klassen Behandler benyttes metoden registrersak(sak s), på side 8, samt: 33 // Fjerner sak og rydder i arrayet slik at saker[antsaker] er ledig. 34 void fjernsak(sak s) { 35 for (int i = 0; i < antsaker; i++) { 36 if (saker[i] == s) { 37 tidligeresaker.put(saker[i].getsaksnavn(), saker[i]); 38 saker[i] = saker[antsaker 1]; 39 i = antsaker; // Avbryter 40 } 41 } antsaker ; 44 } d) I klassen Register, i tillegg til finnsak() metoden ( på forrige side) og metoden nyttdok() ( på side 8): 236 void avsluttsak() { 237 Dokument avsldok; 238 Sak sak; 10

11 239 // En avsluttet sak skal ha et avslutningsdokument. Bruker metoden 240 // fra oppgave 5b sak = finnsak(); 243 if (sak ==null) { return; 246 } System.out.println("Registrerer avslutningsdokument"); 249 avsldok = nyttdok(sak); if (avsldok==null) { 252 System.out.println("Kan ikke avslutte uten avslutningsdokument"); return; 255 } sak.avslutt(); 258 } I klassen Sak: 90 void avslutt() { 91 avslutningsdato = idag(); 92 sbehandler.fjernsak(this); 93 } Og metoden fjernsak(sak s) i klassen Behandler (se side 10). Oppgave 6 (25%) a) I klassen Register: Metoden finnsak(), på side 9, samt: 264 // Oppgave 6a 265 void status() { 266 Sak sak = finnsak(); 267 if (sak ==null) { return; 270 } sak.status(); 273 } I klassen Sak: 90 void avslutt() { 91 avslutningsdato = idag(); 11

12 92 sbehandler.fjernsak(this); 93 } // Oppgave 6a 96 void status() { // Dokumenter 99 System.out.println("Dokumenter i saken:"); 100 Dokument dok; 101 Iterator it = dokumenter.values().iterator(); 102 while (it.hasnext()) { 103 dok = (Dokument) it.next(); 104 System.out.println("\t " + dok.getnavn()); 105 } // Saksbehandlere 108 System.out.println("Saksbehandlere i saken:"); 109 Behandler b; 110 it = behandlere.values().iterator(); 111 while(it.hasnext()) { 112 b = (Behandler) it.next(); 113 System.out.println("\t " + b.getnavn()); 114 } // Avsluttet ( eller ikke) 117 System.out.println("Saken er" + I Dokument: 27 String getnavn() { 28 return filnavn; 29 } I Behandler: 18 String getnavn() { 19 return navn; 20 } Oppgave 7 (15%) I klassen Register: 341 int antdagsverkigjen() { 342 double snitttid = snitt(); 343 double estimert = 0; 344 int saktid; Sak sak;

13 348 Iterator it = saker.values().iterator (); 349 while (it.hasnext()) { 350 sak = (Sak) it.next(); if (! sak.eravsluttet()) { 353 saktid = sak.behandlingstid(); if ( saktid < snitttid ) { 356 estimert += snitttid; 357 } else { 358 estimert += (1.5 saktid); 359 } } } return (int) estimert; } I Sak 127 int behandlingstid() { 128 return eravsluttet()? 129 dagermellom(regdato, avslutningsdato) : 130 dagermellom(regdato, idag()); 131 } 139 boolean eravsluttet() { 140 return avslutningsdato == 0; 141 } 13

14 Kildekode Register 1 import java.util. ; 2 import inf101. ; 3 4 class Register { 5 6 HashMap saker = new HashMap(); // alle saker 7 HashMap behandlere = new HashMap(); // alle ansatte 8 HashMap dokumenter = new HashMap(); // alle dokumenter 9 10 String filbehandlere = "ansatt.dat"; // filnavn 11 String filsak = "saker.dat"; // filnavn 12 Inn stdin = new Inn(); / Deklarert og definert her. Brukes i flere 13 metoder for inn og ut lesing. 14 / public static void main(string[] args) { 18 new Register(); 19 } // Constructor 23 Register() { 24 int valg = 0; // Les ansatte og saker fra fil. 27 behandlerefrafil(); 28 sakerfrafil(); do { 31 meny(); 32 System.out.print("Ditt valg: "); 33 valg = stdin.inint (); switch (valg) { // Fra oppgave 5: 38 case 1: nysak(); break; 39 case 2: nyttdok(finnsak()); break; 40 case 3: skiftbehandler(); break; 41 case 4: avsluttsak(); break; 42 case 5: status (); break; // Fra oppgave 6: 45 case 6: snitt (); break; 14

15 46 case 7: oversikt (); break; // Fra oppgave 7: 49 case 8: overskridelser(); break; case 9: System.out.println("Takk for denne gang."); break; 52 default : System.out.println("Ukjent valg"); break; } } while (valg!= 5); // end do while } void meny() { // Fra oppgave 5: 64 System.out.println(" MENY "); 65 System.out.println(""); 66 System.out.println("1: Legg inn ny sak"); 67 System.out.println("2: Legg til nytt dokument til sak"); 68 System.out.println("3: Skift saksbehandler til sak"); 69 System.out.println("4: Avslutte en sak"); // Fra oppgave 6: 72 System.out.println("5: Skriv ut status for sak"); 73 System.out.println("6: Gjennomsnittlig behandlingstid for avsluttede saker,"); 74 System.out.println(" og korteste behandlingstid."); 75 System.out.println("7: Oversikt over saksbehandlere og saker"); // Fra oppgave 7: 78 System.out.println("8: Oversikt over saker som har overskridet fristen"); 79 System.out.println("9: Avslutte programmet."); 80 System.out.println(""); 81 System.out.println(" "); 82 } / 86 OPPGAVE 4 87 / // Oppgave 4a 91 void behandleretilfil() { 92 Ut fut = new Ut(filBehandlere); 93 Behandler b; 94 15

16 95 Iterator i = behandlere.values().iterator(); 96 while (i.hasnext()) { 97 b = (Behandler) i.next(); 98 fut.outstringln(b.getnavn()); 99 } fut.close (); 102 } // Oppgave 4a 106 void behandlerefrafil() { 107 String navn; Inn fin = new Inn(filBehandlere); 110 while (!fin.endoffile()) { 111 navn = fin.instringln(); 112 behandlere.put(navn, new Behandler(navn)); 113 } 114 } // Oppgave 4b 118 void sakerfrafil() { 119 Inn fin = new Inn(filSak); int antsaker = fin.inint(); 122 for (int i = 0; i < antsaker; i++) { 123 new Sak(fin, saker, behandlere, dokumenter); 124 } 125 } / 128 OPPGAVE / // Oppgave 5a. 132 void nysak() { 133 Behandler behandler = null; 134 Behandler tmp; 135 String filnavn; 136 Dokument dok; 137 Sak sak; // Finner en ledig behandler. 140 int minst = Behandler.maxAntSaker; 141 Iterator it = behandlere.values().iterator(); 142 while (it.hasnext()) { 143 tmp = (Behandler) it.next(); 16

17 144 if ( tmp.antsaker() < minst) { 145 behandler = tmp; 146 minst = behandler.antsaker(); 147 } 148 } // Hvis ingen saksbehandlere er ledig avsluttes metoden, 151 // og saken avvises. 152 if ( minst == Behandler.maxAntSaker) { 153 System.out.println("Beklager ingen ledige saksbehandlere."); return; 156 } // Filnavn: 159 System.out.print("Filnavn?: "); 160 filnavn = stdin.instringln(); 161 dok = new Dokument(filnavn); 162 dokumenter.put(filnavn, dok); // Lager ny sak. 165 sak = new Sak(dok, behandler); 166 saker.put(sak.getsaksnavn(), sak); } // Oppgave 5b 172 // Returnerer peker til dokumentet som blir registrert. Dette benyttes 173 // i metoden avsluttsak. 174 Dokument nyttdok(sak sak) { 175 String doknavn; 176 Dokument dok; 177 Behandler behandler; if (sak ==null) { 180 return null; 181 } System.out.print("Filnavn til dokument: "); 184 doknavn = stdin.instringln(); dok = new Dokument(doknavn); 187 dokumenter.put(doknavn, dok); sak.regdok(dok); return dok;

18 193 } // Oppgave 5c 197 void skiftbehandler() { 198 Behandler b; 199 Sak sak = finnsak(); if (sak ==null) { 202 return; 203 } System.out.print("Ny saksbehandlers navn: "); 206 b = (Behandler) behandlere.get(stdin.instringln()); // Sjekker mot diverse ulovligheter og avbryter evt. metoden (med 209 // return) if (b == null) { 212 System.out.println("Finnes ikke i listen over saksbehandlere."); return; } else if (b.antsaker() == Behandler.maxAntSaker) { 217 System.out.println("Saksbehandler har allerede " Behandler.maxAntSaker " saker til behandling."); 220 return; } else if ( sak.harbehandler(b)) { 223 System.out.println("Saksbehandleren har allerede behandlet saken."); return; } //... slik at her har vi en sak som kan skifte til 230 // saksbehandler b. 231 sak.skiftbehandler(b); 232 } // Oppgave 5d 236 void avsluttsak() { 237 Dokument avsldok; 238 Sak sak; 239 // En avsluttet sak skal ha et avslutningsdokument. Bruker metoden 240 // fra oppgave 5b

19 242 sak = finnsak(); 243 if (sak ==null) { return; 246 } System.out.println("Registrerer avslutningsdokument"); 249 avsldok = nyttdok(sak); if (avsldok==null) { 252 System.out.println("Kan ikke avslutte uten avslutningsdokument"); return; 255 } sak.avslutt(); 258 } / 261 OPPGAVE / // Oppgave 6a 265 void status() { 266 Sak sak = finnsak(); 267 if (sak ==null) { return; 270 } sak.status(); 273 } // Oppgave 6b og 6d 277 / 278 Returnerer gjennomsnittlig behandlingstid (for bruk i oppgave 7) 279 / 280 double snitt() { 281 int totantdager = 0; 282 int minst = Integer.MAX_VALUE; 283 int antavslsaker = 0; 284 int tid ; 285 Sak sak; Iterator it = saker.values().iterator (); 288 while (it.hasnext()) { 289 sak = (Sak) it.next();

20 291 if ( sak.eravsluttet ()) { 292 totantdager += sak.behandlingstid(); 293 antavslsaker++; if ( sak.behandlingstid() < minst) { 296 minst = sak.behandlingstid(); 297 } 298 } 299 } System.out.println("Gjennomsnittlig behandlingstid er" (totantdager/antavslsaker)); 303 System.out.println("Minste behandlingstid var " + minst); return totantdager/antavslsaker; 306 } // Oppgave 6c 310 // Tolker oppgaven dithen at det er saken som er avsluttet ikke 311 // saksbehandlerens behandling av den. 312 void oversikt() { 313 System.out.println("Saksbehandler \t\t Ant. saker"); 314 Iterator it = behandlere.values().iterator(); while (it.hasnext()) { 317 ((Behandler) it.next()).oversikt(); 318 } 319 } // Oppgave 6e 322 void overskridelser() { 323 System.out.println("Overskridelser:"); 324 System.out.println("Sak\t\tOverskridelse\t\tSaksbehandlere"); Sak sak; 327 Iterator it = saker.values().iterator (); while (it.hasnext()) { 330 sak = (Sak) it.next(); 331 sak.overskridelser(); 332 } 333 } / 337 OPPGAVE /

21 340 // Oppg int antdagsverkigjen() { 342 double snitttid = snitt(); 343 double estimert = 0; 344 int saktid; Sak sak; Iterator it = saker.values().iterator (); 349 while (it.hasnext()) { 350 sak = (Sak) it.next(); if (! sak.eravsluttet()) { 353 saktid = sak.behandlingstid(); if ( saktid < snitttid ) { 356 estimert += snitttid; 357 } else { 358 estimert += (1.5 saktid); 359 } } } return (int) estimert; } / 370 Hjelpemetode finner en sak utfra oppgitt saksnavn. 371 / 372 Sak finnsak() { System.out.print("Sak nr: "); 375 Sak sak = (Sak) saker.get(stdin.instringln()); 376 if (sak ==null) { 377 // Ikke en del av oppgaven, men mye lettere under 378 // testing av programmet. 379 System.out.println("Ukjent saksnummer. Registrerte saker:"); Iterator i = saker.values().iterator (); 382 while (i.hasnext()) { 383 System.out.println(((Sak) i.next()).getsaksnavn()); 384 } return null; } 21

22 return sak; } } 22

23 Sak 1 import java.util. ; 2 import inf101. ; 3 4 class Sak { 5 6 static int FRIST = 90; // Ant. dager for behandling 7 String saksnavn; // Entydig saksnavn 8 Dokument sdok; // 1. dok. i saken. 9 int regdato; // Dato for sak 10 int behandlingsfrist; // Dato for frist 11 int avslutningsdato = 0; // Faktisk avslutningsdato 12 Behandler sbehandler; // siste saksbehandler 13 HashMap behandlere = new HashMap(); // alle saksbehandlere 14 HashMap dokumenter = new HashMap(); // alle dokumenter // Constructor 18 Sak(Dokument sdok, Behandler b) { saksnavn = nyttsaksnavn(); 21 this.sdok = sdok; 22 regdok(sdok); 23 regdato = idag(); 24 behandlingsfrist = leggtildager(frist); 25 sbehandler = b; 26 sbehandler.registrersak(this); 27 behandlere.put(sbehandler.getnavn(), sbehandler); 28 System.out.println("Saksnavn: " + getsaksnavn()); 29 } // Oppgave 4 b 33 // Constructor ved innlesing fra fil 34 Sak(Inn infil, HashMap allesaker, HashMap allebehandlere, 35 HashMap alledokumenter) { saksnavn = infil.instringln(); 38 regdato = infil.inint (); 39 avslutningsdato = infil.inint(); 40 int antdok = infil.inint (); 41 Dokument d; for (int i = 0; i < antdok; i++) { 44 d=new Dokument(infil, alledokumenter); 45 } int antbehandlere = infil.inint(); 23

24 48 49 // Les 1. behandler: 50 String navn = infil. instringln(); 51 sbehandler = (Behandler) allebehandlere.get(navn); 52 sbehandler.registrersak(this); 53 behandlere.put(sbehandler.getnavn(), sbehandler); // Les de andre behandlerne. Begynner tellingen fra 1 siden 56 // en behandler allerede er registrert. 57 for (int i = 1; i < antbehandlere; i++) { 58 navn = infil.instringln(); // Legg merke til at casting til Behandler ikke er trengs 61 // siden en HashMap tar Object som argument. 62 behandlere.put(navn, allebehandlere.get(navn)); 63 // lar behandlere registrere at de har behandlet saken. 64 ((Behandler) behandlere.get(navn)).registrersak(this); 65 ((Behandler) behandlere.get(navn)).fjernsak(this); 66 } 67 } // Oppgave 5a og 5b 70 void regdok(dokument d) { 71 d.settsaksnavn(saksnavn); 72 dokumenter.put(d.getnavn(), d); 73 } // Oppgave 5c 77 void skiftbehandler(behandler nybehandler) { if ( sbehandler!= null) { 80 sbehandler.fjernsak(this); 81 } sbehandler = nybehandler; 84 behandlere.put(sbehandler.getnavn(), sbehandler); 85 sbehandler.registrersak(this); 86 } // Oppgave 5d 90 void avslutt() { 91 avslutningsdato = idag(); 92 sbehandler.fjernsak(this); 93 } // Oppgave 6a 96 void status() { 24

25 97 98 // Dokumenter 99 System.out.println("Dokumenter i saken:"); 100 Dokument dok; 101 Iterator it = dokumenter.values().iterator(); 102 while (it.hasnext()) { 103 dok = (Dokument) it.next(); 104 System.out.println("\t " + dok.getnavn()); 105 } // Saksbehandlere 108 System.out.println("Saksbehandlere i saken:"); 109 Behandler b; 110 it = behandlere.values().iterator(); 111 while(it.hasnext()) { 112 b = (Behandler) it.next(); 113 System.out.println("\t " + b.getnavn()); 114 } // Avsluttet ( eller ikke) 117 System.out.println("Saken er" (eravsluttet ()? " ikke " : " " ) "avsluttet." ); // Frist for avslutning 122 System.out.println("Fristen for avslutning: " + behandlingsfrist); 123 } // 6 B 127 int behandlingstid() { 128 return eravsluttet()? 129 dagermellom(regdato, avslutningsdato) : 130 dagermellom(regdato, idag()); 131 } boolean harbehandler(behandler b) { 135 return behandlere.containskey(b.getnavn()); 136 } boolean eravsluttet() { 140 return avslutningsdato == 0; 141 } void overskridelser() { 145 if ( behandlingstid() > FRIST) { 25

26 146 System.out.println(saksnavn + "\t\t" + behandlingstid()); 147 Behandler b; 148 Iterator it = behandlere.values().iterator(); 149 while (it.hasnext()) { 150 b = (Behandler) it.next(); 151 System.out.println("\t\t\t\t" + b.getnavn()); 152 } 153 } 154 } / 159 Hjelpemetoder 160 / String getsaksnavn() { 163 return saksnavn; 164 } / 169 Hjelpemetoder (fra Appendix) 170 / public static int idag() { 173 return ; 174 } public static int leggtildager(int d) { 177 return idag() + d; 178 } public static int dagermellom(int d1, int d2) { 181 return d2 d1; 182 } private static int unik = 0; 185 public static String nyttsaksnavn() { 186 unik++; 187 return "S01 " + unik; 188 } } 26

27 Behandler 1 import java.util. ; 2 3 class Behandler { 4 5 final static int maxantsaker = 10; // Max ant. saker for en saksbehandler 6 String navn; // Navn til saksbehandler 7 Sak[] saker = new Sak[maxAntSaker]; // Saker under behandling 8 int antsaker = 0; // Antall saker under behandling 9 int totantsaker = 0; // Totalt ant. behandlede saker 10 HashMap tidligeresaker = new HashMap(); // Liste med behandlede saker Behandler(String navn) { 13 this.navn = navn; 14 } // Oppgave 4 18 String getnavn() { 19 return navn; 20 } // Benyttes i oppgave 4b, 5a og 5c. 25 void registrersak(sak s) { 26 saker[antsaker++] = s; 27 totantsaker++; 28 } // Oppgave 5c og 5d 33 // Fjerner sak og rydder i arrayet slik at saker[antsaker] er ledig. 34 void fjernsak(sak s) { 35 for (int i = 0; i < antsaker; i++) { 36 if (saker[i] == s) { 37 tidligeresaker.put(saker[i].getsaksnavn(), saker[i]); 38 saker[i] = saker[antsaker 1]; 39 i = antsaker; // Avbryter 40 } 41 } antsaker ; 44 } // Oppgave 6) 27

28 48 void oversikt() { 49 int ant = 0; 50 Sak sak; Iterator it = tidligeresaker.values().iterator (); 53 while (it.hasnext()) { 54 sak = (Sak) it.next(); 55 if ( sak.eravsluttet ()) { 56 ant++; 57 } 58 } System.out.println(navn + "\t\t" + ant); 61 } / 65 Hjelpemetode 66 / 67 int antsaker() { 68 return antsaker; 69 } } 28

29 Dokument 1 import java.util. ; 2 import inf101. ; 3 4 class Dokument { 5 6 String filnavn; // Filnavn til dokument 7 int innkommendato; // Inkommen dato for dokument 8 String avsender; 9 String adressat; 10 String saksnavn; / Entydig, samsvarer med sak. Settes idet en sak 11 blir tildelt dette dokumentet. 12 / Dokument(String navn) { 15 filnavn = navn; 16 // evt. lese resten av objektvariablene fra filen. 17 } Dokument(Inn frafil, HashMap alledokumenter) { 20 // leser fra fil og legger seg inn i listen over alle dokumenter. 21 } void settsaksnavn(string snavn) { 24 saksnavn = snavn; 25 } String getnavn() { 28 return filnavn; 29 } } 29

Løsningsforslag til eksamen i INF1000 våren 2006

Løsningsforslag til eksamen i INF1000 våren 2006 Løsningsforslag til eksamen i INF1000 våren 2006 Oppgave 1 a) -1 false 7 b) 30 c) Verdien til j er: 4Verdien til k er: 3Verdien til n er: 7 d) Andre if-test er true Tredje if-test er true e) k = 4 k =

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 7 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert

Detaljer

Oppgave 1 - Kortsvarsoppgave. INF1000 eksamen V05. Oppgave 1 (c) Oppgave 1 (b) Svar: a = 9, b=10

Oppgave 1 - Kortsvarsoppgave. INF1000 eksamen V05. Oppgave 1 (c) Oppgave 1 (b) Svar: a = 9, b=10 Oppgave 1 - Kortsvarsoppgave (a) INF1000 eksamen V05 class SkrivHei { public static void main (String[] args) { for (int i = 0; i < 5; i++) { for (int j = 0; j < 2; j ++) { i = i + 4; System.out.println("hei");

Detaljer

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

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Oppgave 1 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

Detaljer

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

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Oppgave 1 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

Detaljer

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

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI Oppgave 1 INF1000 Uke 13 Gjennomgang av prøveeksamen fra høsten 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new double[1];

Detaljer

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012 INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver

Detaljer

Eksamen høsten 2003 Den store bøygen i INF1000 er de obligatoriske oppgavene.

Eksamen høsten 2003 Den store bøygen i INF1000 er de obligatoriske oppgavene. Eksamen høsten 2003 Den store bøygen i INF1000 er de obligatoriske oppgavene. Hovedformålet med eksamen er å skille ut de som har skjønt litt om programmering fra de som ikke har skjønt noe. For de som

Detaljer

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) HashMap, innstikksortering, javadoc (kap. 9.1-9.11, m.m. i "Rett på Java" 3. utg.) NB! Legg merke til at disse er løsningsforslag. Løsningene

Detaljer

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012 INF1000 - Uke 10 Løsningsforslag ukesoppgaver 10 24. oktober 2012 Løsningsforlag Oppgave 1 Array vs. HashMap a) Følgende program viser et enkelt banksystem med en array kontoer[], og metoder for å finne

Detaljer

Repetisjon. INF1000 - gruppe 13

Repetisjon. INF1000 - gruppe 13 Repetisjon INF1000 - gruppe 13 Lese fra fil Scanner import java.util.*; void lesfrafil() { try { Scanner innfil = new Scanner(new File( fugleobservasjoner.txt )); while (innfil.hasnext()) { String linje

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8

Detaljer

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon INF1000 Forelesning 9 Hashmap Eksempel: Flyreservasjon HashMap Ofte har vi flere, mange objekter av en bestemt klasse - eks. : elever på en skole biler som har passert bomringen i Oslo telefonsamtaler

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

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; }

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; } 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; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel HashMap INF1000 Forelesning 9 Hashmap Eksempel: Flyreservasjon Ofte har vi flere, mange objekter av en bestemt klasse - eks. : elever på en skole biler som har passert bomringen i Oslo telefonsamtaler

Detaljer

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

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006 Husk å melde deg på prøveeksamen i INF1000! INF1000: Forelesning 11 Ole Christian Lingjærde 7.november 2006 Frist påmelding: 16. november Arrangementet er torsdag 23. november kl 1420 og omfatter: Oppgaven

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :

Detaljer

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

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00

Detaljer

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

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11). De neste ukene Forelesning om IT og samfunn neste uke (13/11). INF1000 Uke 12 Gjennomgang av prøveeksamen fra høsten 2004 Ukeoppgave: Blir en gammel eksamensoppgave Uken etter er det prøveeksamen. Den

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Fredag 5. desember 2003 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler :

Detaljer

Oblig4 - forklaringer. Arne og Ole Christian

Oblig4 - forklaringer. Arne og Ole Christian Oblig4 - forklaringer Arne og Ole Christian Struktur og alle (?) klassene import easyio.*; import java.util.*; class Oblig4 { public static void main (String[] args) { String s1 = "Stasjoner-1.txt"; String

Detaljer

Oppgave01.java class Bongo { 2 public static void main(string[] args){ 3 int[][][]bongo = new int[2][3][4]; 4 5 // SVAR: 24 6 } 7 } 8

Oppgave01.java class Bongo { 2 public static void main(string[] args){ 3 int[][][]bongo = new int[2][3][4]; 4 5 // SVAR: 24 6 } 7 } 8 Oppgave0.java 07.0.2008 class Bongo { 2 public static void main(string[] args){ 3 int[][][]bongo = new int[2][3][4]; 4 5 // SVAR: 24 6 } 7 } 8 Oppgave02.java 07.0.2008 class Lovlige { 2 public static void

Detaljer

Løsningsforslag INF desember 2007

Løsningsforslag INF desember 2007 Løsningsforslag INF000 3 desember 2007 Oppgave Svar: 50 Oppgave2.java 3..2007 // Løsning til Oppgave 2 class Oppgave2 { public static void main(string[] args){ // Lovlig, men ikke med i oppgaven int i[],

Detaljer

(MVC - Model, View, Control)

(MVC - Model, View, Control) INF1010 - våren 2008 Modell - Utsyn - Kontroll (MVC - Model, View, Control) Stein Gjessing Inst. for informatikk Et bankprogram Vi skal lage et program som håndterer kontoene i en bank. En konto eies av

Detaljer

INF1000 (Uke 14) Resten av eksamen H03 + del av V05

INF1000 (Uke 14) Resten av eksamen H03 + del av V05 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. Kristoffersen Eksamen H03, oppgave 2 2 Oppgave 2.1

Detaljer

Gjennomgang av eksamen H99

Gjennomgang av eksamen H99 Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares

Detaljer

INF1000 Prøveeksamen Oppgave 7 og 9

INF1000 Prøveeksamen Oppgave 7 og 9 INF1000 Prøveeksamen Oppgave 7 og 9 Høst 2015 Siri Moe Jensen 7a) Skriv en klasse Gave med to variabler som forteller hva som er i gaven, og hvor mye den har kostet. Klassen skal ha en konstruktør med

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 8 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag Fredag 10. desember

Detaljer

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng) Oppgave 1 (1 poeng) Er disse programsetningene lovlige i Java? INF 1 Prøveeksamen 3. november 6 Ole Christian og Arne x int i, j = i+1; x int j=3, while(j-->) i = j; x int[]int[] int = new int[8]int[9];

Detaljer

INF1000 - Løsning på seminaropppgaver til uke 8

INF1000 - Løsning på seminaropppgaver til uke 8 INF1000 - Løsning på seminaropppgaver til uke 8 Oppgave 1 a) for(string nokkel : studenter.keyset){ System.out.println(nokkel); Studenten sitt navn blir skrevet ut. b) for(student dennestudenten : studenter.values()){

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet er på

Detaljer

Løsningsforslag eksamen in105, høsten 2000

Løsningsforslag eksamen in105, høsten 2000 Løsningsforslag eksamen in105, høsten 2000 Det tas forbehold om mulige feil i løsningsforslaget. Oppgave 1 I klassen Bok velger vi her å ta med int antallutlån selv om denne ikke trengs før i oppgave 4.

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Fredag 4. desember 2015 Tid for eksamen: 14.30 (4 timer)

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

"Nelsons kaffebutikk"

Nelsons kaffebutikk "Nelsons kaffebutikk" et eksempel på systemutvikling med objekter Originale lysark av Jens Kaasbøll - mindre endringer av G. Skagestein og Knut Hegna IN105-javaNelson-1 Nelsons kaffebutikk Området som

Detaljer

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang Kom forberedt til tirsdag INF1000 Tips til obligatorisk oppgave 4 Kikk på prøveeksamen fra 2004 http://www.uio.no/studier/emner/matnat/ifi/inf1000/h 07/undervisningsmateriale/proveeksamen-H2004.pdf Tittel:

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO FASIT/LØSNINGSFORSLAG (kommentarene er for læringsformål og avspeiler ikke nødvendigvis hva som ble vektlagt ved sensuren denne gang). Forslaget er laget av Ole Christian Lingjærde. UNIVERSITETET I OSLO

Detaljer

Objektorientert design av kode. Refaktorering.

Objektorientert design av kode. Refaktorering. Objektorientert design av kode. Refaktorering. DEL 2 INF1010-forelesning 9. mars Ragnhild Kobro Runde Kjennetegn på god design (fra INF1050) En god utforming gjør den jobben den er ment å gjøre. En god

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet

Detaljer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 11.2 Korteste vei i en graf 11.2.1 Dijkstras metode En graf er et system med noder og kanter mellom noder. Grafen kalles rettet Notasjon Verdien

Detaljer

INF1000: Forelesning 4. Mer om arrayer Metoder

INF1000: Forelesning 4. Mer om arrayer Metoder INF1000: Forelesning 4 Mer om arrayer Metoder MER OM ARRAYER 2 Array som en samling verdier Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene: String[] studenter = new String[500];

Detaljer

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003 INF1000 HashMap Marit Nybakken marnybak@ifi.uio.no 2. november 2003 Dette dokumentet skal tas med en klype salt og forfatteren sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet PRØVEEKSAMEN i INF1000 23. november 2004 kl. 14.00 17.00 Dine svar skal skrives på disse oppgavearkene, og ikke på separate ark. Dette gjelder

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 10. juni 2005 Tid for eksamen: 14.30 17.30 Oppgavesettet er på

Detaljer

Oppgave 1 (Programtolkning) INF1000 Eksamen V06. Oppgave 1 (Programtolkning) Oppgave 1 (Programtolkning)

Oppgave 1 (Programtolkning) INF1000 Eksamen V06. Oppgave 1 (Programtolkning) Oppgave 1 (Programtolkning) INF1000 Eksamen V06 1a: Hva blir skrevet ut når programmet nedenfor kjøres? class stringhåndtering{ public static void main (String[] args){ String s = "Lykke til på eksamen"; String t = "Eksamen"; System.out.println(s.indexOf(t));

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO PRØVEEKSAMEN INF1 - H6 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1 Grunnkurs i objektorientert programmering Dato: Torsdag 3. november 6 Tid for prøveeksamen

Detaljer

PRØVEEKSAMEN (rettet versjon 27/11)

PRØVEEKSAMEN (rettet versjon 27/11) PRØVEEKSAMEN (rettet versjon 27/11) Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Onsdag 26 nov. 2003 Tid for eksamen : 1400-1700 Oppgavesettet er på : 13 sider Vedlegg :

Detaljer

Løsningsforslag eksamen in105, våren 2000

Løsningsforslag eksamen in105, våren 2000 Løsningsforslag eksamen in105, våren 2000 Løsningsforslaget er basert på et løsningsforslag av Anders Brunland og er siden modifisert av Ole Christian Lingjærde. Dato: 13.06.00. Oppgave 1A I klassen Hjorne:

Detaljer

Gjennomgang av en tenkt eksamensoppgave

Gjennomgang av en tenkt eksamensoppgave Tidsbruk fram til eksamen: et forslag Gjennomgang av en tenkt eksamensoppgave INF1000, 21. oktober 2008 Ole Christian Lingjærde Løs oppgaver for hverandre på tavle og kritiser hverandre Arbeid med obliger

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Kandidatnummer: BOKMÅL UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Fredag 1. desember 2006 Tid for eksamen

Detaljer

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

Eksempel: Body Mass Index (BMI) Forelesning inf1000 - Java 3. Ferdig program (første del) Ferdig program (siste del) Forelesning inf1000 - Java 3 Eksempel: Body Mass Index (BMI) Tema: Mer om forgreninger Løkker Arrayer Litt om easyio Ole Christian Lingjærde, 5. september 2012 Ole Chr. Lingjærde Institutt for informatikk,

Detaljer

Gjennomgang av en tenkt eksamensoppgave

Gjennomgang av en tenkt eksamensoppgave Gjennomgang av en tenkt eksamensoppgave INF1000, 21. oktober 2008 Ole Christian Lingjærde Tidsbruk fram til eksamen: et forslag Løs oppgaver for hverandre på tavle og kritiser hverandre Gå gjennom viktige

Detaljer

import java.io.*; import java.util.*; import javagently.text;

import java.io.*; import java.util.*; import javagently.text; //-------------------------------------------------------- // // Fil: Oppg1.java - // løser oppgave 1 i eksamensettet for in105 - v99 // //-------------------------------------------------------- import

Detaljer

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det? Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3hus litt mer tips enn i oppgaven I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje

Detaljer

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

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller. Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter

Detaljer

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

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen Forkurs INF1010 Dag 1 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Tuva Kristine Thoresen (tuvakt@ifi.uio.no) Institutt for Informatikk, 6. januar 2014 Forkurs INF1010 - dag 1 Hello, World! Typer Input/output

Detaljer

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

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 MER OM ARRAYER 2 Array som en samling verdier Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene: String[] studenter = new String[500];

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO OPPGAVEN BLIR GJENNOMGÅTT PÅ FORELESNINGEN 24/10. DU BØR FORBEREDE DEG TIL FORELESNINGEN VED Å SETTE AV MINST TRE-FIRE TIMER TIL Å PRØVE Å LØSE OPPGAVEN PÅ EGENHÅND. UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige

Detaljer

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 26. februar 2014 1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Vi tar utgangspunkt i dette programmet for

Detaljer

INF1000: Forelesning 6. Klasser og objekter del 1

INF1000: Forelesning 6. Klasser og objekter del 1 INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK 2 Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer navn, brukernavn og telefonnummer.

Detaljer

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15. Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 15. januar 2016 Forkurs INF1010 - dag 3 Strenger 2 Forkurs INF1010 - dag

Detaljer

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten. Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på

Detaljer

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten. Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Fredag 4. desember 2015 Tid for eksamen: 14.30 (4 timer)

Detaljer

Oblig 4Hybelhus litt mer tips enn i oppgaven

Oblig 4Hybelhus litt mer tips enn i oppgaven Oblig 4Hybelhus litt mer tips enn i oppgaven lørdag 19. okt 2013 Arne Maus Obligatorisk oppgave 4 Gulbrand Grås husleiesystem I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer,

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 6 Bokmål Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert

Detaljer

TOD063 Datastrukturer og algoritmer

TOD063 Datastrukturer og algoritmer TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage

Detaljer

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012. 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. Else Lervik, januar 2012. Objektorientert modellering

Detaljer

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Eivind Storm Aarnæs (eivinsaa@math.uio.no) Institutt for Informatikk, 14. januar 2015 Forkurs INF1010 - dag 3 Strenger Fil-I/O Unntakshåndtering

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Kandidatnummer: Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1000 Grunnkurs i objektorientert programmering Prøveeksamensdag : Tirsdag 10. november 2015 Tid

Detaljer

IN Notat om I/O i Java

IN Notat om I/O i Java IN1010 - Notat om I/O i Java Mathias J.P. Stang, Tuva Kristine Thoresen, Ingrid Grønlie Guren 17. januar 2018 Dette notatet handler om I/O (input/output) i Java, og tar for seg innlesning fra terminal,

Detaljer

INF1000: noen avsluttende ord

INF1000: noen avsluttende ord Pensum Det som er gjennomgått på forelesningene INF1000: noen avsluttende ord Arne og Fredrik Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige virkninger

Detaljer

Gjennomgang av eksamen V99

Gjennomgang av eksamen V99 Gjennomgang av eksamen V99 Holmenkoll-stafetten DEL 1 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Ole Chr Lingjærde Institutt for informatikk 19 april

Detaljer

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2

Detaljer

INF1010, 15. januar 2014 2. time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 15. januar 2014 2. time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 15. januar 2014 2. time Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Repetisjon fra gamle dager: Metoder med parametre En metode uten parameter:

Detaljer

LO191D/LC191D Videregående programmering

LO191D/LC191D Videregående programmering LO191D/LC191D Videregående programmering Eksamen mai 2012 Løsningsforslag Oppgave 1 Klassen Destinasjon: // Oppgaven er uklar på hva som skal inn i klassen Destinasjon. // Her følger en minimumsutgave

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program

Detaljer

Inf1000 (Uke 10) HashMap og ArrayList

Inf1000 (Uke 10) HashMap og ArrayList Inf1000 (Uke 10) HashMap og ArrayList Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Bibliotekpakker i Java Det er laget mange

Detaljer

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer, bruker og telefonnummer Med

Detaljer

Oblig 3 tips litt mer tips enn i oppgaven

Oblig 3 tips litt mer tips enn i oppgaven Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3 tips litt mer tips enn i oppgaven lørdag 3. okt 2009 I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert

Detaljer

Inf 1000 høst 2005 Løsningsforslag ordinær eksamen

Inf 1000 høst 2005 Løsningsforslag ordinær eksamen Inf 1000 høst 2005 Løsningsforslag ordinær eksamen Oppgave 1 (10 poeng) a) 11 x 3 = 33 b) 4 c) 4 d) 10 x 9 = 90 Oppgave 2 (16 poeng) Er disse programsetningene lovlige i Java? JA x NEI int i=1, j =i; x

Detaljer

b) 10 2 = 20 c) 5 1 = 5.

b) 10 2 = 20 c) 5 1 = 5. INF1000 oppgavesett til teoritimer i undervisningsuke 11 (6-10 nov) 1) Hvor mange doubleverdier er det plass til i hver av disse arrayene? a) double[][] tabella = new double[9][9]; b) double[][] tabellb

Detaljer

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

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

INF1000 oppgaver til uke 38 (17 sep 23 sep)

INF1000 oppgaver til uke 38 (17 sep 23 sep) INF1000 oppgaver til uke 38 (17 sep 23 sep) Formål: Øve på programmering med forgreninger, løkker og arrayer. Teoritimer (plenumsøvinger): 1. Oppgave 4 og 6 i kapittel 4 i læreboka. 2. En blokk er en samling

Detaljer

Eksempel: Body Mass Index (BMI)

Eksempel: Body Mass Index (BMI) Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 3 Tema: Forgreninger Løkker Arrayer Ole Christian Lingjærde, 5. september 2013 1 Eksempel: Body Mass Index (BMI) Vi skal lage et program som beregner BMI

Detaljer

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

INF1000 (Uke 5) Mer om løkker, arrayer og metoder INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse

Detaljer

IN105-javaNelson-2. array, evt. flere dimensjoner. Institutt for informatikk Jens Kaasbøll sept. 1999. En funksjon om gangen En klasse om gangen

IN105-javaNelson-2. array, evt. flere dimensjoner. Institutt for informatikk Jens Kaasbøll sept. 1999. En funksjon om gangen En klasse om gangen "Nelsons affebuti" et esempel på systemutviling med objeter Originale lysar av Jens Kaasbøll - mindre endringer av G. Sagestein og Knut Hegna IN5-javaNelson- Analyse Lageradministrasjon (inventory) Mange

Detaljer

Objekter. Uke 8 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden

Objekter. Uke 8 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden Objekter Uke 8 - Objekter, klasser og pekere Hvorfor deler vi verden inn i enheter når vi snakker om den? En blomst, fjorten trær, ti mennesker, en bil, en vei, mange murstein, en bankkonti,... Svar :

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Kandidatnummer: Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1000 Grunnkurs i objektorientert programmering Prøveeksamensdag : Onsdag 12. november 2014 Tid

Detaljer

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Konstruktører. Bruk av konstruktører når vi opererer med enkle klasser er ganske ukomplisert. Når vi skriver. skjer følgende: Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i

Detaljer

Løsningsforslag til eksamen i inf101 H2002. Oppgave 1. a)

Løsningsforslag til eksamen i inf101 H2002. Oppgave 1. a) Løsningsforslag til eksamen i inf101 H2002. Oppgave 1. a) class Kunde private String navn; private String adresse; private String tlf; private int antbeh; Kunde(String navn, String adresse, String tlf)

Detaljer

INF1000: Forelesning 7

INF1000: Forelesning 7 INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en

Detaljer

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7 Gjennomgang prøveeksamen 2014 oppgave 1, 2, 4, 5, 7 1a: Hva er verdien til tall etter at følgende kode er utført: 17 int tall = 5; tall = (tall*3) + 2; 5 15 17 1b: Anta at følgende programsetninger utføres.

Detaljer

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

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:

Detaljer