Løsningsforslag, inf101, våren 2001
|
|
- Marcus Mikkelsen
- 6 år siden
- Visninger:
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 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 =
DetaljerEksamen 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
DetaljerOppgave 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");
DetaljerOppgave 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
DetaljerPrø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
DetaljerOppgave 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];
DetaljerINF1000 - 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
DetaljerEksamen 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
DetaljerLø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
DetaljerINF 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
DetaljerRepetisjon. 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
DetaljerUNIVERSITETET 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
DetaljerINF1000 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
DetaljerINF1000 (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
DetaljerINF1000 (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
DetaljerHva 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 =
DetaljerHashMap. 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
DetaljerINF1000: 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
DetaljerUNIVERSITETET 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 :
DetaljerLø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
DetaljerUNIVERSITETET 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
DetaljerDe 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
DetaljerUNIVERSITETET 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 :
DetaljerOblig4 - 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
DetaljerOppgave01.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
DetaljerLø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)
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
DetaljerINF1000 (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
DetaljerGjennomgang 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
DetaljerINF1000 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
DetaljerEksamen 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
DetaljerINF 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];
DetaljerINF1000 - 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()){
DetaljerUNIVERSITETET 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å
DetaljerLø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.
DetaljerTDT4100 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
DetaljerUNIVERSITETET 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)
DetaljerUNIVERSITETET 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" 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
DetaljerKom 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:
DetaljerUNIVERSITETET 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
DetaljerObjektorientert 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
DetaljerUNIVERSITETET 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
DetaljerAlgoritmer 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
DetaljerINF1000: 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];
DetaljerINF1000 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
DetaljerUNIVERSITETET 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
DetaljerUNIVERSITETET 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å
DetaljerOppgave 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));
DetaljerUNIVERSITETET 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
DetaljerPRØ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 :
DetaljerLø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:
DetaljerGjennomgang 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
DetaljerUNIVERSITETET 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
DetaljerEksempel: 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,
DetaljerGjennomgang 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
Detaljerimport java.io.*; import java.util.*; import javagently.text;
//-------------------------------------------------------- // // Fil: Oppg1.java - // løser oppgave 1 i eksamensettet for in105 - v99 // //-------------------------------------------------------- import
Detaljer1. 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
DetaljerDagens 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
DetaljerForkurs 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
DetaljerMER 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];
DetaljerUNIVERSITETET 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
Detaljer1. 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
DetaljerINF1000: 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.
DetaljerForkurs 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
DetaljerHvis 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å
DetaljerHvis 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å
Detaljer13.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,
DetaljerUNIVERSITETET 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)
DetaljerOblig 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,
DetaljerEksamen 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
DetaljerTOD063 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
DetaljerLC191D 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
DetaljerForkurs 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
DetaljerUNIVERSITETET 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
DetaljerIN 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,
DetaljerINF1000: 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
DetaljerGjennomgang 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
DetaljerINF1010, 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
DetaljerINF1010, 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:
DetaljerLO191D/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
DetaljerForelesning 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
DetaljerForelesning 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
DetaljerInf1000 (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
DetaljerOBJEKTER 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
DetaljerOblig 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
DetaljerInf 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
Detaljerb) 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
DetaljerINF1000 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
DetaljerINF1000 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
DetaljerEksempel: 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
DetaljerINF1000 (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
DetaljerIN105-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
DetaljerObjekter. 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 :
DetaljerUNIVERSITETET 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
DetaljerKonstruktø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
DetaljerLø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)
DetaljerINF1000: 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
DetaljerGjennomgang 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.
DetaljerInnhold 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