INF1010 våren 2005 Uke 4, 1. februar Arv og subklasser, del 2

Størrelse: px
Begynne med side:

Download "INF1010 våren 2005 Uke 4, 1. februar Arv og subklasser, del 2"

Transkript

1 INF1010 våre 2005 Uke 4, 1. februar Arv og subklasser, del 2 Stei Gjessig Istitutt for iformatikk Repetisjo Vi har sett to former for gjebruk av klasser: Ved sammesetig (komposisjo) Modellerer relasjoer som består av/har e Ved arv (bruk av subklasser) Modellerer relasjoer som er e/er et E subklasse deklareres ved bruk av økkelordet exteds: class B exteds A { deklarerer B som e subklasse (utvidelse) A. 1 2 Klassehierarki: Repetisjo - Biler Klassehierarki: Persobil Bil Repetisjo: Klasser - Subklasser class Bil { <lys beige egeskaper> class Persobil exteds Bil { <røde egeskaper> class Lastebil exteds Bil { < grøe egeskaper> class Drosje exteds Persobil { < gule egeskaper> Lastebil Bil Persobil class Bil {... class Persobil exteds Bil {... class Lastebil exteds Bil {... Alle lastebiler Drosje Alle biler Alle drosjer Alle persobiler Lastebil Drosje class Drosje exteds Persobil {

2 Dyreriket (utdrag) Repetisjo - dyreriket Aimalia Leddyr Ryggstregdyr Bløtdyr Tusebei Isekter Kappedyr Virveldyr Blekksprut Segler Fugler Pattedyr Slager og øgler Rovdyr r; Hovdyr Klovdyr Rovdyr Hjort Kveg Kattedyr Hudedyr Storfe Geit Sau Rev Hud Ulv ew Geit(); Hetet fra 5 Pattedyr Klovdyr Kveg Geit Sau Side Geit er et Kvegdyr, ka vi gjøre klasse Geit til e subklasse av klasse Kveg: class Geit exteds Kveg { Klasse Geit arver da alle egeskaper (variable/ metoder) til klasse Kveg, i tillegg til å ha sie ege egeskaper. Objekter av klasse Geit vil utgjøre e delmegde av objekter av klasse Kveg, de er spesialiserte. Side Geit er et Kveg, og Kveg er et Klovdyr, vil også Geit være et Klovdyr. Dermed arver Geit også alle egeskapee til klasse Klovdyr (via klasse Kveg). 6 Repetisjo - dyreriket Hva slags objekt har jeg? Pattedyr Kattedyr Rovdyr Hudedyr Rev Hud Ulv Side e Hud er et Rovdyr, ka vi bruke e Hud hver gag vi har behov for et Rovdyr. Altså ka e Rovdyr-peker også peke på objekter av klasse Hud: Rovdyr r = ew Hud(); Hva skjer å hvis vi prøver metodekallet r.m()? Ved kompilerig: Kallet r.m() godkjees dersom det fies e metode m() i klasse Rovdyr eller e superklasse til dee. Ved kjørig: Hvis det fies e metode m() i klasse Hud, er det dee som brukes. Hvis ikke, leter vi oppover i klasse-hierarkiet til vi fier de. 7 De boolske operatore istaceof hjelper oss å fie ut hvilke klasse et gitt objekt er basert på, oe som er yttig i mage tilfeller: class TestFrukt { public static void mai(strig[] args) { Eple e = ew Eple(); skrivut(e); Hva blir utskrifte til dette programmet? static void skrivut(frukt f) { if (f istaceof Eple) System.out.pritl("Dette er et eple!"); else if (f istaceof Appelsi) System.out.pritl("Dette er e appelsi!"); class Frukt {.. class Eple exteds Frukt {.. class Appelsi exteds Frukt {.. 8

3 Eksempel La oss utvide metode i skrivut til også å teste på frukt: Oppgave Hva skrives ut her? static void skrivut(frukt f) { if (f istaceof Frukt) System.out.pritl("Dette er e frukt!"); else if (f istaceof Eple) System.out.pritl("Dette er et eple!"); else if (f istaceof Appelsi) System.out.pritl("Dette er e appelsi!"); Hva vil resultatet av programmet bli hvis vi bruker dee versjoe av skrivut? Lærdom: Et objekt vil alltid være e istas av sie superklasser i tillegg til si ege klasse. 9 class Oppgave { public static void mai (Strig[] args) { A apeker = ew A(); B bpeker = ew B(); apeker.skriv(); bpeker.skriv(); apeker = bpeker; apeker.skriv(); if (apeker istaceof A) { System.out.pritl ("apeker istaceof A"); if (apeker istaceof B) { System.out.pritl ("apeker istaceof B"); class A { void skriv() { System.out.pritl(bereg()); it bereg() { retur 10; class B exteds A { void skriv() { System.out.pritl ("Svaret er: " + bereg()); 10 Mer bruk av istaceof Koverterig av referaser (pekere) class Bil { Strig regnr; class Persobil exteds Bil { it atpass; class Lastebil exteds Bil { double lastevekt; class Drosje exteds Persobil { it LøyveNr; Iterator it = allebiler.values().iterator(); while (it.hasnext()) { Bil b = (Bil) it.ext(); Strig r = b.regnr; if (b istaceof Pesobil) { Persobil pb = (Persobil) b; it pas = pb.atpass; else { if (b istaceof Lastebil) { Lastebil ls = (Lastebil) b; double lv = ls.lastevekt; 11 Ata at vi har: class Studet exteds Perso { Studet stud = ew Studet(); Ved tilordige Perso pers; pers = stud; har vi e implisitt koverterig fra Studet- til Persoreferase. Hvis vi å øsker å få tak i de spesielle Studetegeskapee, må vi foreta e eksplisitt koverterig tilbake til Studet igje: Studet stud2 = (Studet) pers; Dette kalles castig på egelsk 12

4 Koverterig av referaser (forts.) Koverterig mellom flere ivåer Hva hvis vi istedefor hadde hatt: Perso pers = ew Perso(); Studet stud = (Studet) pers; Dette godkjees av kompilatore, me ved kjørig får vi feilmeldige java.lag.classcastexceptio (fordi pers ikke peker på et objekt med alle Studet egeskapee) For å ugå dee feile, bruk istaceof: if (pers istaceof Studet) { Studet stud = (Studet) pers; (Har det objektet pers peker på alle Studet - egeskapee?) Perso Studet MasterStudet MasterStudet master = ew MasterStudet(); Koverterig oppover: Studet stud = master; Perso pers = master; Koverterig edover: Perso pers Studet stud (Studet) pers (MasterStudet) pers (fordi dette krever kotroll uder kjørig) MasterStudet master Alle pekere har lov til å peke bortover og edover (me ikke oppover ) Oppgave Brev Koverterig til klasse Object Ata at vi har deklarasjoee Sokad class Brev { class Sokad exteds Brev { class Kjaerlighetsbrev exteds Brev { Avgjør hvilke av følgede uttrykk som er lovlige: Sokad s1 Sokad s2 = ew Sokad(); = ew Brev(); Brev b1 = ew Sokad(); Brev b2 = (Brev) ew Sokad(); Sokad s3 = ew Kjaerlighetsbrev(); Sokad s4 = (Sokad) ew Kjaerlighetsbrev(); Lovlig Kjaerli. Ulovlig Alle klasser i Java er subklasser av klasse Object. Når vi skriver class Perso { så tolker Java dette som class Perso exteds Object { Dermed ka vi alltid kovertere e referase oppover til klasse Object: Perso pers = ew Perso(); Object obj = pers; For å sakke om egeskapee til Perso-objektet må vi kovertere edover igje: (Perso) obj Brev b3 = (Sokad) ew Brev(); 15 16

5 Eksempel: HashMap ArrayList E og samme HashMap ka brukes til å lagre objekter av e hvilke som helst klasse "trikset" er å teke på dem alle som objekter av klasse Object. HashMap tabell = ew HashMap(); Studet stud = ew Studet(); stud.lesfratermial(); tabell.put("kari", stud); stud = (Studet) tabell.get("kari"); Disse blir implisitt kovertert oppover til Object, side metode put i HashMap har formalparametre put(object key, Object value). Dette gir e referase til et objekt av klasse Object, og vi må eksplisitt kovertere edover til Studet for å sakke om objektets Studet-egeskaper. 17 E ae yttig klasse i java.util, er ArrayList. I likhet med HashMap, fugerer ArrayList på objekter av type Object. E ArrayList fugerer mye på samme måte som e array, me ute fast størrelse. De viktigste metodee i ArrayList: add(object o): legger til objektet o sist i arraye add(it i, Object o): legger til objektet o på ideks i, ved å skyve de resterede elemetee edover size(): gir atall elemeter i arraye 18 ArrayList (forts.) Object: tostrig og equals get(it i): returer objektet på plass i remove(it i): fjerer (og returerer) objektet på plass i, ved å skyve resterede elemeter oppover På samme måte som for e HashMap, returerer get og remove bare e Object-referase. Dee må vi så valigvis kovertere edover til riktig type. Eksempel på bruk: ArrayList liste = ew ArrayList(); liste.add(ew Perso("Kari")); liste.add(ew Perso("Per")); liste.add(1, ew Perso("Ola")); Hva blir p2 her? Perso p = (Perso) liste.remove(0); liste.add(1, p); Perso p2 = (Perso) liste.get(liste.size()-1); Klasse Object ieholder bl.a. to viktige metoder: Strig tostrig(): returerer e Strig-represetasjo av objektet boolea equals(object o): sjekker om to objekter er like (i utgagspuktet det samme som pekerlikhet) Disse metodee ka ma så selv redefiere til å gjøre oe mer foruftig. Poeget er at e bruker av e klasse vet at disse metodee alltid vil være defiert

6 Eksempel på tostrig og equals Kostruktører class Pukt { it x, y; Pukt(it x0, it y0) { x = x0; y = y0; Ata: Pukt p1 = ew Pukt(3,4); Pukt p2 = ew Pukt(3,4); Pukt2 q1 = ew Pukt2(3,4); Pukt2 q2 = ew Pukt2(3,4); Hva blir å: p1.tostrig(); p1.equals(p2); class Pukt2 { it x, y; Pukt2(it x0, it y0) { x = x0; y = y0; public Strig tostrig() { retur ("x = "+x+" y = "+y); public boolea equals(object o) { if (!(o istaceof Pukt2)) retur false; Pukt2 p = (Pukt2) o; retur x == p.x && y == p.y; Pukt@f5da06 q1.tostrig(); x = 3 y = 4 false q1.equals(q2); true 21 Bruk av kostruktører år vi opererer med "ekle" klasser er gaske ukomplisert. Når vi skriver Pukt p = ew Pukt(3,4); class Pukt { skjer følgede: it x, y; 1. Det settes av plass i iter-miet til et objekt av klasse Pukt og til referase p. 2. Variablee x og y blir deklarert. 3. Kostruktør-metode blir kalt med x0=3 og y0=4. 4. Etter at kostruktøre har satt x=3 og y=4, settes høyreside i tilordige Pukt p = ew Pukt(3,4) lik adresse (referase) til det ye objektet. 5. Tilordige Pukt p = utføres, dvs p settes lik adresse til objektet. av: p type: Pukt Pukt(it x0, it y0) { x = x0; y = y0; av: x av: y 3 4 type: it type: it Pukt(it x0, it y0) av: x0 3 type: it x = x0; y = y0; av: y0 4 type: it 22 Kostruktører og arv Kostruktører og arv (forts.) Det blir oe mer komplisert år vi opererer med arv: Ata at vi har defiert e subklasse class B exteds A { Hvilke kostruktør utføres hvis vi skriver B bpeker = ew B(); Kostruktøre i klasse A? Kostruktøre i klasse B? Begge? Ata at vi har deklarert tre klasser: class A { class B exteds A { class C exteds B { Når vi skriver ew C() skjer følgede: 1. Kostruktøre til C kalles (som valig) 2. Kostruktøre til C starter med å kalle på B si kostruktør 3. Kostruktøre til B starter med å kalle på A si kostruktør 4. Så utføres A si kostruktør 5. Kotrolle kommer tilbake til B si kostruktør, som utføres 6. Kotrolle kommer tilbake til C si kostruktør, som utføres 23 24

7 Kall på super-kostruktøre Eksempel 1 Superklasses kostruktør ka kalles fra e subklasse ved å si: - vil kalle på e kostruktør ute parametre super(5, test ); - om vi vil kalle på e kostruktør med to parametre (it og Strig) Et kall på super må legges helt i begyelse av kostruktøre. Kaller ma ikke super eksplisitt, vil Java selv legge i kall på super( ) år programmet kompileres. Lager du e kostruktør med parametre, vil Java ikke legge i i klasse de tomme kostruktøre ute parametre. Det må du evetuelt gjøre selv! 25 Ata at vi har følgede klasser: class Perso { Strig fødselsr; Perso() { fødselsr = ""; class Studet exteds Perso { it studid; Studet() {... Her er to kostruktører: Studet() { studid = 0; Studet() { studid = 0; Disse to er helt ekvivalete! Hva skjer hvis Studet ikke har oe kostruktør :? class Studet exteds Perso { it studid = 0; 26 Eksempel 2 Eksempel 3 Ata at vi har følgede klasser: class Perso { Strig fødselsr; Perso(Strig fr) { fødselsr = fr; class Studet exteds Perso { it studid; Studet() {... Her er to forslag til kostruktører: Studet() { super(""); studid = 0; Studet() { studid = 0; Disse er ikke ekvivalete. (Bare de ee virker - hvilke?) 27 class Bygig { Bygig() { System.out.pritl("Bygig"); class Bolighus exteds Bygig { Bolighus() { System.out.pritl("Bolighus"); class Blokk exteds Bolighus { Blokk() { System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); Hva blir utskrifte fra dette programmet? 28

8 Når programmet kompileres Når programmet utføres class Bygig { Bygig() { System.out.pritl("Bygig"); // class Bygig class Bolighus exteds Bygig { Bolighus() { System.out.pritl("Bolighus"); // class Bolighus Java føyer selv på super() i disse tre kostruktøree før programmet eksekveres 4. class Bygig { Bygig() { System.out.pritl("Bygig"); // class Bygig class Bolighus exteds Bygig { Bolighus() { System.out.pritl("Bolighus"); // class Bolighus 5. Til Object si kostruktør 3. class Blokk exteds Bolighus { Blokk() { System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); // class Blokk class Blokk exteds Bolighus { Blokk() { System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); // class Blokk Her starter eksekverige Når programmet utføres (forts.) Eksempel 4 7. Nå er Bygig skrevet ut 8. Nå er Bolighus skrevet ut 9. Nå er Blokk skrevet ut class Bygig { Bygig() { System.out.pritl("Bygig"); // class Bygig class Bolighus exteds Bygig { Bolighus() { System.out.pritl("Bolighus"); // class Bolighus class Blokk exteds Bolighus { Blokk() { System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); // class Blokk 6. Tilbake fra Object si kostruktør 31 class Bygig { Bygig() { System.out.pritl("Bygig"); class Bolighus exteds Bygig { Bolighus(it i) { System.out.pritl("Bolighus r " + i); class Blokk exteds Bolighus { Blokk() { System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); Hva skjer i dette eksempelet? Merk: Kostruktøre i klasse Bolighus har å e parameter. 32

9 Når programmet kompileres Et større eksempel: Barehage class Bygig { Bygig() { System.out.pritl("Bygig"); // class Bygig class Bolighus exteds Bygig { Bolighus(it i) { System.out.pritl("Bolighus"); // class Bolighus class Blokk exteds Bolighus { Blokk() { System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); // class Blokk Java legger igje til kall på super() i alle kostruktøree. Me: Kallet matcher ikke metode i atall parametre! Mulige løsiger: 1. Selv legge til kall på super, med argumet, i kotruktøre Blokk. 2. Legge til e tom kostruktør i Bolighus. 33 Vi skal lage et program for å admiistrere e barehage. I barehage fies det to typer avdeliger: Småbarsavdelig Bar opp til 3 år Plass til 9 bar Avdelig for større bar Bar over 3 år Plass til 18 bar Et bar ka være tatt opp til maksimalt e avdelig. For hver avdelig vedlikeholdes e veteliste. Et bar ka bare stå på e veteliste. Derimot ka et bar både være tatt opp i e småbarsavdelig, og stå på veteliste til e avdelig for større bar. Opptak fra veteliste skjer "ved loddtrekig", me med søskeprioritet ved opptak til småbarsavdeligee. Til avdeligee for større bar har bar som allerede har plass i e småbarsavdelig prioritet. 34 Barehage: Klassediagram Barehage: Objekt-diagram "Per" :Bar Barehage 1 tattopp * 1 1..* Avdelig 1 * * Bar søske * veteliste :Barehage allebar alleavd "Marihøe" "Ugle" :SmåbarAvd av="marihøe" atallplasser=9 tattopp veteliste av="per" født=2002 søske "Per" :StorebarAvd SmåbarAvd StorebarAvd 35 av="ugle" atallplasser=18 tattopp veteliste 36

10 Klasse Avdelig med subklasser class Avdelig { Strig av; it atallplasser; HashMap tattopp; HashMap veteliste; Klassee Bar og Barehage class Bar { Strig av; it født; HashMap søske; Avdelig veter, opptak; class SmåbarAvd exteds Avdelig { SmåbarAvd(Strig av) { super(av); atallplasser = 9; Avdelig(Strig av) { this.av = av; tattopp = ew HashMap(); veteliste = ew HashMap(); Bar(Strig av) { this.av = av; søske = ew HashMap(); class StorebarAvd exteds Avdelig { StorebarAvd(Strig av) { public static void mai(strig[] args) { super(av); Barehage bhg = ew Barehage(); atallplasser = 18; bhg.ordreløkke(); class Barehage { HashMap allebar = ew HashMap(); HashMap alleavd = ew HashMap(); I i = ew I(); Out ut = ew Out(); Barehage: oe metoder Metode yavdelig() Vi skal kosetrere oss om følgede metoder: Ny avdelig Ledige plasser: Skriver ut atall ledige småbarsplasser og atall ledige plasser for store bar totalt i barehage. Søkad: Setter et bar på veteliste til e avdelig. Opptak: Foretar opptak av bar til alle avdeligee i barehage. I tillegg fies selvfølgelig metoder for å registrere bar/søske, skrive iformasjo om bar/avdelig, Se kursets hjemmeside for "fullstedig" program. 39 // I klasse Barehage: void yavdelig() { Strig av; Avdelig a; System.out.prit("Nav på y avdelig: "); av = i.itext(); if (alleavd.cotaiskey(av)) { System.out.pritl("Registrert allerede"); retur; System.out.prit("Småbarsavdelig (j/)? "); if (i.ichar() == 'j') { a = ew SmåbarAvd(av); else { a = ew StorebarAvd(av); alleavd.put(av, a); 40

11 Metode ledigeplasser() // I klasse Barehage: void ledigeplasser() { it atallsmå = 0; it atallstore = 0; Iterator it = alleavd.values().iterator(); while (it.hasnext()) { Avdelig a = (Avdelig) it.ext(); if (a istaceof SmåbarAvd) atallsmå += a.atallledige(); else atallstore += a.atallledige(); System.out.pritl("Småbarsplasser: " + atallsmå); System.out.pritl("For store bar: " + atallstore); // I klasse Avdelig: Søkad om opptak // I klasse Barehage: void søkad() { Strig aav, bav; Avdelig a; Bar b; System.out.prit("Avdeliges av: "); aav = i.itext(); System.out.prit("Barets av: "); bav = i.itext(); a = (Avdelig) alleavd.get(aav); b = (Bar) allebar.get(bav); if (a == ull b == ull) { System.out.pritl("Fier ikke bar/avdelig"); retur; it atallledige() { retur atallplasser tattopp.size(); 41 a.søkad(b); 42 Søkad om opptak (klasse Avdelig) Søkad om opptak (klasse Bar) // I klasse SmåbarAvd: void søkad(bar b) { if (b.alder() < 3) { super.søkad(b); else { // I klasse Avdelig: void søkad(bar b) { veteliste.put(b.av, b); b.settveteliste(this); System.out.pritl("For stor"); // I klasse StorebarAvd: void søkad(bar b) { if (b.alder() >= 3) { super.søkad(b); else { System.out.pritl("For lite"); 43 // I klasse Bar: it alder() { it iår = Caledar.getIstace().get(Caledar.YEAR); retur iår - født; void settveteliste(avdelig a) { if (veter!= ull) { veter.fjerfraveteliste(this); veter = a; // I klasse Avdelig: void fjerfraveteliste(bar b) { veteliste.remove(b.av); 44

12 Opptak Opptak (klasse Avdelig) // I klasse Barehage: void opptak() { Iterator it = alleavd.values().iterator(); while (it.hasnext()) { Avdelig a = (Avdelig) it.ext(); a.opptak(); // I klasse Avdelig: void opptak() { ArrayList søkader = ew ArrayList(); Iterator it = veteliste.values().iterator(); while (it.hasnext()) { Bar b = (Bar) it.ext(); if (prioritert(b)) { søkader.add(0,b); // Legg til først else { søkader.add(b); // Legg til sist 45 // Søkadsliste er å sortert slik at bar med prioritet // ligger først i arraye. while (atallledige() > 0 && søkader.size() > 0) { Bar b = (Bar) søkader.remove(0); taopp(b); 46 Opptak (klasse Avdelig forts.) Opptak (klasse Bar) // I klasse Avdelig: // I klasse SmåbarAvd: // I klasse Bar: boolea prioritert(bar b) { retur false; boolea prioritert(bar b) { retur b.søskemedplass(); boolea harplass() { retur opptak!= ull; void taopp(bar b) { tattopp.put(b.av, b); fjerfraveteliste(b); b.tattopp(this); // I klasse Bar: void tattopp(avdelig a) { if (opptak!= ull) opptak.slutter(this); if (veter == a) veter = ull; opptak = a; // I klasse StorebarAvd: boolea prioritert(bar b) { retur b.harplass(); // I klasse Avdelig: void slutter(bar b) { tattopp.remove(b.av); 47 boolea søskemedplass() { boolea plass = false; Iterator it = søske.values().iterator(); while (it.hasnext() &&!plass) { Bar b = (Bar) it.ext(); if (b.harplass()) { plass = true; retur plass; 48

IN1010 våren 2019 Onsdag 6. februar. Arv og subklasser - del 2

IN1010 våren 2019 Onsdag 6. februar. Arv og subklasser - del 2 IN1010 våre 2019 Osdag 6. februar Arv og subklasser - del 2 Stei Gjessig Dages tema Virtuelle metoder som er det samme som Polymorfi Når bruker vi arv / år bruker vi komposisjo Kostruktører i subklasser

Detaljer

INF1010 våren 2017 Torsdag 26. januar. Arv og subklasser del 1. Stein Gjessing Institutt for informatikk Universitetet i Oslo

INF1010 våren 2017 Torsdag 26. januar. Arv og subklasser del 1. Stein Gjessing Institutt for informatikk Universitetet i Oslo INF1010 våre 2017 Torsdag 26. jauar Arv og subklasser del 1 Stei Gjessig Istitutt for iformatikk Uiversitetet i Oslo 1 Når du har lært om subklasser ka du programmere med: Første uke: Spesialiserig (og

Detaljer

INF1010 våren 2007 Uke 6, 6. februar Arv og subklasser, del 2

INF1010 våren 2007 Uke 6, 6. februar Arv og subklasser, del 2 Repetisjon INF1010 våren 2007 Uke 6, 6. februar Arv og subklasser, del 2 Stein Gjessing Institutt for informatikk Vi har sett to former for gjenbruk av klasser: Gammel: Ved sammensetning (komposisjon)

Detaljer

INF1010 våren februar. Arv og subklasser, del 2

INF1010 våren februar. Arv og subklasser, del 2 INF1010 våren 2009 3. februar Arv og subklasser, del 2 En forsmak på interface (grensesnitt) Stein Gjessing Repetisjon Vi har sett to former for gjenbruk av klasser: Gammel: Ved sammensetning (komposisjon)

Detaljer

INF1010 våren februar. Arv og subklasser, del 2. Repetisjon. Repetisjon - Biler. Repetisjon: Klasser - Subklasser

INF1010 våren februar. Arv og subklasser, del 2. Repetisjon. Repetisjon - Biler. Repetisjon: Klasser - Subklasser INF1010 våren 2009 3. februar Arv og subklasser, del 2 En forsmak på interface (grensesnitt) Stein Gjessing Repetisjon Vi har sett to former for gjenbruk av klasser: Gammel: Ved sammensetning (komposisjon)

Detaljer

INF1010 våren Arv og subklasser, del 2

INF1010 våren Arv og subklasser, del 2 INF1010 våren 2010 Torsdag 4. februar Arv og subklasser, del 2 Stein Gjessing Institutt for informatikk Repetisjon Vi har sett to former for gjenbruk av klasser: Gammel: Ved sammensetning (komposisjon)

Detaljer

INF1010 våren 2005 Uke 3, 25. januar Arv og subklasser del I

INF1010 våren 2005 Uke 3, 25. januar Arv og subklasser del I Emeoversikt subklasser INF1010 våre 2005 Uke 3, 25. jauar Arv og subklasser del I Stei Gjessig Istitutt for iformatikk 1 Geeraliserig - spesialiserig Gjebruk av klasser Ved sammesetig (komposisjo) Ved

Detaljer

INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) Stein Gjessing Institutt for informatikk

INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) Stein Gjessing Institutt for informatikk INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) Stein Gjessing Institutt for informatikk 1 Dyreriket (utdrag) Klassehierarki Animalia Leddyr Ryggstrengdyr

Detaljer

INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41)

INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) Dyreriket (utdrag) Klassehierarki Animalia Leddyr Ryggstrengdyr Bløtdyr Tusenbein Insekter Kappedyr

Detaljer

IN1010 våren 2019 Onsdag 15. mai. Rask repetisjon av subklasser og tråder (pluss µ nytt)

IN1010 våren 2019 Onsdag 15. mai. Rask repetisjon av subklasser og tråder (pluss µ nytt) IN1010 våre 2019 Osdag 15. mai Rask repetisjo av subklasser og tråder (pluss µ ytt) Stei Gjessig Istitutt for iformatikk Uiversitetet i Oslo 1 Iledig Dette er 41 lysark som det ikke er mulig å gå gjeom

Detaljer

INF1010 våren Arv og subklasser, del 2

INF1010 våren Arv og subklasser, del 2 INF1010 våren 2011 Torsdag 10. februar Arv og subklasser, del 2 (og litt generiske typer) Stein Gjessing Institutt for informatikk Klassehierarki: Personbil Bil Repetisjon: Biler! class Bil {

Detaljer

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Emneoversikt subklasser INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Stein Gjessing Institutt for informatikk Mange flere eksempler på fellesøvelsene og neste forelesning 1 Generalisering - spesialisering

Detaljer

n / ($$ n 0$$/ $ " 1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5.,.9+- 5.+ 8$ 7$, + - 5.

n / ($$ n 0$$/ $  1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5.,.9+- 5.+ 8$ 7$, + - 5. "# %% & ' ()*,"""). / " %% &%% / ( 0/ " 1 /(232.,..5. 6 7,.5.,. / : ; 5.. )// ).) 8 < ') < 6 6 8 < 8 8 7,.5.,.9 5. 5. 5. 5. 5.. 5..9 /.> DB(?/ ( / (.?/. /?(5@"""6(?( 5@""6 &. A8 6 (."B 3 8 6 ) ("?/& =

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

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

INF1010 våren 2017 Torsdag 9. februar. Interface - Grensesnitt

INF1010 våren 2017 Torsdag 9. februar. Interface - Grensesnitt INF1010 våre 2017 Torsdag 9. februar Iterface - Gresesitt og litt om geeriske klasser og geeriske iterface hvis tid Stei Gjessig Dages hovedtema Egelsk: Iterface (også et Java-ord) Norsk: Gresesitt Les

Detaljer

IN1010 våren 2018 Tirsdag 13. februar. Interface - Grensesnitt

IN1010 våren 2018 Tirsdag 13. februar. Interface - Grensesnitt IN1010 våre 2018 Tirsdag 13. februar Iterface - Gresesitt Stei Gjessig Dages hovedtema Egelsk: Iterface (også et Java-ord) Norsk: Gresesitt Les otatet Gresesitt i Java av Stei Gjessig To motivasjoer for

Detaljer

INF1010 våren Arv og subklasser - del 2

INF1010 våren Arv og subklasser - del 2 INF1010 våren 2013 Torsdag 14. februar Arv og subklasser - del 2 Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi Mer om arv / interface Mer om pekertilordninger

Detaljer

INF1010 våren 2014. Arv og subklasser - del 2

INF1010 våren 2014. Arv og subklasser - del 2 INF1010 våren 2014 Onsdag 19. februar Arv og subklasser - del 2 Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi Mer om arv / interface Mer om pekertilordninger

Detaljer

INF1010 - våren 2007 16. januar, uke 3 - Oversikt og forutsetninger Java datastruktur-tegninger

INF1010 - våren 2007 16. januar, uke 3 - Oversikt og forutsetninger Java datastruktur-tegninger INF1010 - våre 2007 16. jauar, uke 3 - Oversikt og forutsetiger Java datastruktur-tegiger Stei Gjessig Ist. for iformatikk Nye temaer i INF1010 Fra problem til program Software Egieerig light, fasee i

Detaljer

INF1010 våren 2017 Torsdag 2. februar. Arv og subklasser - del 2

INF1010 våren 2017 Torsdag 2. februar. Arv og subklasser - del 2 INF1010 våren 2017 Torsdag 2. februar Arv og subklasser - del 2 Stein Gjessing Dagens tema Virtuelle metoder som er det samme som Polymorfi Når bruker vi arv / når bruker vi komposisjon Konstruktører i

Detaljer

INF1010 våren Arv, subklasser og grensesnitt - del 2

INF1010 våren Arv, subklasser og grensesnitt - del 2 INF1010 våren 2012 Torsdag 16. februar Arv, subklasser og grensesnitt - del 2 Stein Gjessing Institutt for informatikk Dagens tema nummer 1 Norsk: Grensesnitt Engelsk: Interface 2 Hva er objektorientert

Detaljer

INF1010 våren 2016. Arv og subklasser - del 2

INF1010 våren 2016. Arv og subklasser - del 2 INF1010 våren 2016 Onsdag 10. februar Arv og subklasser - del 2 pluss litt om feil og unntak hvis tid Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi

Detaljer

INF våren 2005 Uke 1, 11 jan - Praktisk, oversikt og forutsetninger

INF våren 2005 Uke 1, 11 jan - Praktisk, oversikt og forutsetninger INF1010 - våre 2005 Uke 1, 11 ja - Praktisk, oversikt og forutsetiger Stei Gjessig og Stei Michael Storleer Ist. for iformatikk Om INF1010 Forutsetter INF1000 (eller tilsvarede som Humit1700?) Lærebok

Detaljer

IN1010 våren 2018 Tirsdag 6. februar. Arv og subklasser - del 2

IN1010 våren 2018 Tirsdag 6. februar. Arv og subklasser - del 2 IN1010 våren 2018 Tirsdag 6. februar Arv og subklasser - del 2 Stein Gjessing og Dag Langmyhr Dagens tema Virtuelle metoder som er det samme som Polymorfi Når bruker vi arv / når bruker vi komposisjon

Detaljer

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det, to typer av vinduer? GUI (Graphical User Interface)-programmering

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det, to typer av vinduer? GUI (Graphical User Interface)-programmering Uke9. mars 2005 rafisk brukergresesitt med Swig og awt Litt Modell Utsy - Kotroll Del I Stei jessig Ist for Iformatikk Uiv. i Oslo UI (raphical User Iterface)-programmerig I dag Hvorda få laget et vidu

Detaljer

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo IN1010 våren 2018 Tirsdag 15. mai Repetisjon av subklasser og tråder Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Klassehierarki: Personbil Bil Klasser - Subklasser class Bil {

Detaljer

INF1010 våren Arv og subklasser del 1

INF1010 våren Arv og subklasser del 1 INF1010 våren 2015 Torsdag 12. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering

Detaljer

INF1010 våren Arv og subklasser del 1

INF1010 våren Arv og subklasser del 1 INF1010 våren 2016 Torsdag 4. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering

Detaljer

Post-it spørsmål fra timen (Arv og subklasser)

Post-it spørsmål fra timen (Arv og subklasser) Post-it spørsmål fra timen 30.01 (Arv og subklasser) Tegning Spørsmål: Skjønte ikke tegningene Hater tegningene. Lær meg å tegne. Mvh frustrert elev. Spørsmål: Datastruktur-tegning, og hvor mye detaljer

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

Hvordan gjør vi det, to typer av vinduer? Om Grafiske Bruker-Grensesnitt (GUI) GUI (Graphical User Interface)-programmering

Hvordan gjør vi det, to typer av vinduer? Om Grafiske Bruker-Grensesnitt (GUI) GUI (Graphical User Interface)-programmering GUI (Graphical User Iterface)-programmerig Uke 11 13. mars 2007 Grafisk brukergresesitt med Swig og awt Litt Modell Utsy - Kotroll Del I Stei Gjessig Ist for Iformatikk Uiv. i Oslo I dag (så lagt vi kommer)

Detaljer

INF1010 Arv. Marit Nybakken marnybak@ifi.uio.no 2. februar 2004

INF1010 Arv. Marit Nybakken marnybak@ifi.uio.no 2. februar 2004 INF1010 Arv Marit Nybakken marnybak@ifi.uio.no 2. februar 2004 Motivasjon Arv bruker vi så vi skal slippe å skrive oss i hjel. Når vi programmerer, prøver vi gjerne å modellere en del av verden ved hjelp

Detaljer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Repitisjonskurs. Arv, Subklasser og Grensesnitt Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett

Detaljer

INF1010, 23. februar Parametriserte klasser Om å gå gjennom egne beholdere (subklasser og grensesnitt 3)

INF1010, 23. februar Parametriserte klasser Om å gå gjennom egne beholdere (subklasser og grensesnitt 3) INF1010, 23. februar 2012 Parametriserte klasser Om å gå gjennom egne beholdere (subklasser og grensesnitt 3) Stein Gjessing Inst for Informatikk Universitetet i Oslo Repetisjon fra gamle dager: Metoder

Detaljer

Tråder i Java Parallelle programmmer og programbiter

Tråder i Java Parallelle programmmer og programbiter Oversikt Tråder i Java Parallelle programmmer og programbiter Stei Gjessig, Ist. for iformatikk, Uiv. i Oslo Hva er parallelle programmer? Hvorfor parallelle programmer? Hvorda ka dette skje i e maski

Detaljer

INF3030 Uke 6, våren Eric Jul PSE Inst. for informatikk

INF3030 Uke 6, våren Eric Jul PSE Inst. for informatikk INF3030 Uke 6, våre 2019 Eric Jul PSE Ist. for iformatikk 1 Å dele opp algoritme Kode består e eller flere steg; som oftest i form av e eller flere samliger av løkker (som er ekle, doble, triple..) Vi

Detaljer

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf 1010-2007 GUI - del 2

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf 1010-2007 GUI - del 2 GUI (Graphical User Iterface)-programmerig If 1010-2007 GUI - del 2 Stei Gjessig Ist for Iformatikk Uiv. i Oslo Tidligere Hvorda få laget et vidu på skjerme Grafikk (tegig i viduet) Hvorda legge ulike

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

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus // class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen

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

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

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

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

INF1000: Forelesning 7. Konstruktører Static

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

Detaljer

INF2440 Uke 5, våren2018. Eric Jul PSE Inst. for informatikk

INF2440 Uke 5, våren2018. Eric Jul PSE Inst. for informatikk INF2440 Uke 5, våre2018 Eric Jul PSE Ist. for iformatikk 1 Hva så vi på i Uke4 1. Kommetarer om matrise-multiplikasjo 2. Hvorfor vi ikke bruker PRAM modelle for parallelle beregiger som skal gå fort. 3.

Detaljer

INF2440, Uke 3, våren 2018 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Eric Jul PSE, Inst. for informatikk

INF2440, Uke 3, våren 2018 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Eric Jul PSE, Inst. for informatikk INF2440, Uke 3, våre 2018 Regler for parallelle programmer, mer om cache og Radix-algoritme Eric Jul PSE, Ist. for iformatikk 1 Hva har vi sett på i Uke2 I) Tre måter å avslutte tråder vi har startet.

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

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

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

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 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Eksamensdag: 9. juni 2011 Tid for eksamen: 09.00 15.00 Oppgavesettet er på 5 sider. Vedlegg:

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

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

INF1010 siste begreper før oblig 2

INF1010 siste begreper før oblig 2 INF1010 siste begreper før oblig 2 Sammenligning. Mer lenkede lister. Forskjellige listeimplementasjoner. Binære trær. Bittelitt om grensesnitt (interface). Dagens forelesning Flere temaer på grunn av

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: 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 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

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

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

INF1010 - Seminaroppgaver til uke 3

INF1010 - Seminaroppgaver til uke 3 INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar

Detaljer

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing.

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing. INF1010 våren 2009 Uke 5, 27. januar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser Generalisering -spesialisering Gjenbruk av klasser Ved sammensetning (komposisjon)

Detaljer

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE Eme: Diskret matematikk Gruppe(r): Eksamesoppgave består av: Atall sider (ikl forside): 5 Emekode: FO 9A Dato: 57 Atall oppgaver: Fagasvarlig: Ulf Uttersrud

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

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

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

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting

Detaljer

INF3030 Uke 7, våren Eric Jul PSE Inst. for informatikk

INF3030 Uke 7, våren Eric Jul PSE Inst. for informatikk INF3030 Uke 7, våre 2019 Eric Jul PSE Ist. for iformatikk 1 Hva så vi på i uke 6 1. Eratosthees sil 2. Kokker og Kelere 3. Cocurrecy: De første to av tre måter å programmere moitorer i Java eksemplifisert

Detaljer

Enkle generiske klasser i Java

Enkle generiske klasser i Java Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt

Detaljer

Rekursjon. Binærsøk. Hanois tårn.

Rekursjon. Binærsøk. Hanois tårn. Rekursjon Binærsøk. Hanois tårn. Hvorfor sortering (og søking) er viktig i programmering «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til

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

Løsningsforslag, inf101, våren 2001

Løsningsforslag, inf101, våren 2001 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

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

Stabler, Køer og Lister. ADT er

Stabler, Køer og Lister. ADT er Stabler, er og Lister I. STEL OG QUEUE DT I.1 DT I.2 rray implemetasjo I.3 Liket-Liste implemetasjo II. DQUEUE DT III.IMPLEMENTSJON V EN DT MED EN NNEN DT Kap. 3 (kursorisk: 3.1.3, 3.2.3, 3.4; utatt: 3.2.4,

Detaljer

Seminaroppgaver IN1010, uke 2

Seminaroppgaver IN1010, uke 2 Seminaroppgaver IN1010, uke 2 1.a: Skriv en klasse HeiVerden.java. Klassen skal inneholde en main- metode (se på notatet fra tidligere). Inne i main -metoden skal programmet først la brukeren oppgi en

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

IN3030 Uke 12, v2019. Eric Jul PSE, Inst. for informatikk

IN3030 Uke 12, v2019. Eric Jul PSE, Inst. for informatikk IN3030 Uke 12, v2019 Eric Jul PSE, Ist. for iformatikk 1 Hva skal vi se på i Uke 12 Review Radix sort Oblig 4 Text Program Parallellizig 2 Oblig 4 Radix sort Parallelliser Radix-sorterig med fra 1 5 sifre

Detaljer

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. "Taher" type: String : type: :... type: : inf1010student null michael@ifi.uio.no INF1010 26. januar 2012 (uke 4) 2 class Eks01 { public

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

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

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

INF våren 2004 Uke2, 18 jan - Fra problem til program. Utvikling av store datasystemer. 13 UML-diagrammer. Oversikt:

INF våren 2004 Uke2, 18 jan - Fra problem til program. Utvikling av store datasystemer. 13 UML-diagrammer. Oversikt: 13 UML-diagrammer INF1010 - våre 2004 Uke2, 18 ja - Fra problem til program Objektdiagram: Vi kommer til å tege Java datastrukturer istede. Stei Gjessig Ist. for iformatikk Klassediagram: Oversikt: Utviklig

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

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

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

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

INF Innleveringsoppgave 6

INF Innleveringsoppgave 6 INF1010 - Innleveringsoppgave 6 Frist: Onsdag 16. mars, 10:00 Maks 6 poeng Om obligatorisk oppgave 4, 6 og 7 i INF1010, våren 2016: "Leger og resepter" Du skal jobbe med en problemstilling omkring leger

Detaljer

INF1000 (Uke 6) Mer om metoder, tekster

INF1000 (Uke 6) Mer om metoder, tekster INF1000 (Uke 6) Mer om metoder, tekster Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Rep: Metoder Java-programmene så langt

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

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

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4 Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I

Detaljer

Forelesning inf Java 4

Forelesning inf Java 4 Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette

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

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49 Innhold Forord...5 1 Det første programmet...15 1.1 Å kommunisere med en datamaskin 16 1.2 Programmeringsspråk 17 1.3 Et program som skriver på skjermen 18 1.4 Kompilering og kjøring 19 1.5 Kommentarer

Detaljer

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

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset: INF1000 (Uke 6) Mer om metoder, tekster Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Rep: Metoder Java-programmene så langt i kurset: består av en enkelt klasse i klassen kan

Detaljer

Feilmeldinger, brukerinput og kontrollflyt

Feilmeldinger, brukerinput og kontrollflyt Feilmeldinger, brukerinput og kontrollflyt Skjønne hvordan et program presist utføres og forberede seg på håndtering av feil INF1000, uke2 Ragnhild Kobro Runde Programmeringskrøll Programmet vil ikke kjøre

Detaljer