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

Størrelse: px
Begynne med side:

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

Transkript

1 IN1010 våre 2019 Osdag 6. februar Arv og subklasser - del 2 Stei Gjessig

2 Dages tema Virtuelle metoder som er det samme som Polymorfi Når bruker vi arv / år bruker vi komposisjo Kostruktører i subklasser Virtuelle Polymorfi - fie av, me det er ikke så vaskelig 2

3 Klassehierarki: Persobil Bil Repetisjo: 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> Alle lastebiler Lastebil Drosje Alle biler Alle drosjer Alle persobiler 46 objekter 46 ew 3

4 class Bil { protected it pris; public it skatt( ) {retur pris * 0.25; Polymorfi: eksempel Klassehierarki: Bil class Persobil exteds Bil { protected it atallpassasjer; public it skatt( ) {retur pris * 1; Persobil class Lastebil exteds Bil { protected double lastevekt; public it skatt ( ) {retur pris * 0.5; Lastebil class Drosje exteds Persobil { protected Strig loyveid; public it skatt ( ) {retur pris * 0.25; Drosje 4

5 Polymorfi: eksempel class Bil { protected it pris; public it skatt( ) {retur pris * 0.25; class Persobil exteds Bil { protected it atallpassasjer; public it skatt( ) {retur pris * 1; protected it pris public it skatt( ) {retur pris*0.25; protected it pris public it skatt( ) {retur pris*0.25; protected it atpassasjer public it skatt( ) {retur pris * 1; class Lastebil exteds Bil { protected double lastevekt; public it skatt ( ) {retur pris * 0.5; protected it pris public it skatt( ) {retur pris*0.25; private double lastevekt public it skatt( ) {retur pris*0.5; class Drosje exteds Persobil { protected Strig loyveid; public it skatt ( ) {retur pris *0.25; protected it pris public it skatt( ) {retur pris*0.25; protected it atpassasjer public it skatt( ) {retur pris * 1; protected Strig loyveid public it skatt( ) {retur pris*0.25; Bilobjekt Persobilobjekt Lastebilobjekt Drosjeobjekt 5

6 Polymorfi: eksempel Bil protected it pris public it skatt( ) {retur pris*0.25; Bil Persobil Bil Lastebil Bil Persobil Drosje protected it pris public it skatt( ) {retur pris*0.25; protected it atpassasjer public it skatt( ) {retur pris * 1; protected it pris public it skatt( ) {retur pris*0.25; private double lastevekt public it skatt( ) {retur pris*0.5; protected it pris public it skatt( ) {retur pris*0.25; protected it atpassasjer public it skatt( ) {retur pris * 1; protected Strig loyveid public it skatt( ) {retur pris*0.25; Bilobjekt Persobilobjekt Lastebilobjekt Drosjeobjekt 6

7 Bil Bil Persobil Bil Lastebil b1 Polymorfi: eksempel b2 p1 b3 last protected it pris public it skatt( ) {retur pris*0.25; protected it pris public it skatt( ) {retur pris*0.25; protected it atpassasjer public it skatt( ) {retur pris * 1; Bilobjekt Persobilobjekt Hva blir: Bil Persobil Drosje b4 p2 d1 protected it pris public it skatt( ) {retur pris*0.25; private double lastevekt public it skatt( ) {retur pris*0.5; Lastebilobjekt b1.skatt() p1.skatt() b2.skatt() last.skatt() b3.skatt() b4.skatt() p2.skatt() d1.skatt() protected it pris public it skatt( ) {retur pris*0.25; protected it atpassasjer public it skatt( ) {retur pris * 1; protected Strig loyveid public it skatt( ) {retur pris*0.25; Drosjeobjekt 7

8 Omdefierig av metoder - polymorfi Vi har sett at med subklasser ka vi utvide e eksisterede klasse med ye metoder (og ye variable) E subklasse ka også defiere e metode med samme sigatur som e metode i superklasse, me med ulikt ihold. De ye metode vil omdefiere (erstatte) metode som er defiert i superklasse Metoder som ka omdefieres på dee måte kalles virtuelle metoder I Java er alle metoder virtuelle, så sat de ikke er deklarert med fial Virtuelle metoder = polymorfi 8

9 Polymorfi: Nytt eksempel For objekter av type ValigHud er det class ValigHud { dee metode som //... gjelder. public void bjeff() { System.out.pritl("Vov-vov"); class Rasehud exteds ValigHud { //... public void bjeff() { For objekter av type Rasehud er det dee metode som gjelder. System.out.pritl("Voff-voff"); ValigHud Rasehud

10 Polymorfi: eksempel ValigHud v Rasehud r ValigHud g public void bjeff() { System.out.pritl("Vov-vov"); public void bjeff() { System.out.pritl("Vov-vov"); public void bjeff() { System.out.pritl("Voff-voff"); Ata dette programmet: Hva skrives ut ved hvert av kallee: ValigHud v = ew ValigHud(); Rasehud r = ew Rasehud(); ValigHud g = r; v.bjeff(); r.bjeff(); g.bjeff(); Vov-vov Voff-voff Voff-voff 10

11 Istrumet ist void skrivdefiisjo() { System.out.pritl( Et istr..."); Oppgave: Hva skrives ut år programmet Musikk.java kjøres? void skrivdefiisjo() { System.out.pritl( Et piao... "); class Musikk { public static void mai (Strig[] args) { Istrumet ist = ew Piao(); ist.skrivdefiisjo(); class Istrumet { public void skrivdefiisjo () { System.out.pritl ("Et istrumet er oe ma ka spille på"); class Piao exteds Istrumet { public void skrivdefiisjo () { System.out.pritl ("Et piao er et stregeistrumet"); Istrumet Piao 11

12 Musikk versjo 2 Hva skjer i dette tilfellet? Istrumet ist void skrivdefiisjo( ) { System.out.pritl( Et istrum..."); void skrivdefiisjo(strig overskrift) { System.out.pritl(... ); System.out.pritl( "Et piao.. ); class Musikk { public static void mai (Strig[] args) { Istrumet ist = ew Piao(); ist.skrivdefiisjo(); class Istrumet { public void skrivdefiisjo () { System.out.pritl("Et istrumet er oe ma ka spille på"); class Piao exteds Istrumet { public void skrivdefiisjo (Strig overskrift) { System.out.pritl(overskrift); System.out.pritl("Et piao er et stregeistrumet"); 12

13 Istrumet ist void skrivdefiisjo(strig overskrift) { System.out.pritl(... ); System.out.pritl( "Et istrumet.. ); Musikk versjo 3 void skrivdefiisjo( ) { System.out.pritl( Et piao..."); class Musikk { public static void mai (Strig[] args) { Istrumet ist = ew Piao(); ist.skrivdefiisjo(); class Istrumet { public void skrivdefiisjo(strig overskrift) { System.out.pritl(overskrift); System.out.pritl("Et istrumet er oe ma ka spille på"); Hva skjer a? Programmet lar seg ikke oversette class Piao exteds Istrumet { public void skrivdefiisjo () { System.out.pritl("Et piao er et stregeistrumet"); 13

14 Musikk-eksemplee: Lærdom Når vi ser på et objekt via e superklasse-peker, mister vi valigvis tilgag til metoder og variable som er defiert i subklasse. Dersom e metode i subklasse også er defiert (med samme sigatur) i superklasse har vi likevel tilgag via superklasse-pekere, fordi objektets dypeste metode brukes. Slike metoder kalles virtuelle metoder, og dee mekaisme kalles polymorfi. Det som er relevat er derfor hvilke metoder som fies i superklasse (med hvilke parametre), me ikke ødvedigvis iholdet i metodee. Samme sigatur = samme av og øyaktig samme parametre (ikke ikl. returtype i Java, me Java protesterer hvis gal returtype) 14

15 Flere virtuelle metoder class Vare { protected it pris; public void setpris(it p){pris = p; protected it prisutemoms() { retur pris; public it prismedmoms() { retur (it) (1.25*prisUteMoms()); class SalgsVare exteds Vare { protected it rabatt; // I proset... public void setrabatt(it r){ rabatt = r; protected it prisutemoms() { retur pris (pris*rabatt/100); 15

16 pris 100 Vare v = ew Vare(); v.setpris(100); SalgsVare s = Vare v2 ew SalgsVare(); s.setpris(100); s.setrabatt(20); Vare v2 = s; SalgsVare s Hva blir å: v.prismedmoms(); s.prismedmoms(); v2.prismedmoms(); Vare v protected it prisutemoms ( ) { retur pris; public it prismedmoms { retur (it) (1.25*prisUteMoms ( ) ); pris protected it prisutemoms ( ) { retur pris; public it prismedmoms { retur (it) (1.25*prisUteMoms ( ) ); rabatt protected it prisutemoms ( ) { retur pris (pris*rabatt/100); 16

17 Polymorfi: skrivdata I uiversitets-eksemplet så vi at klassee Studet og Asatt (før vi hadde lært om subklasser) hadde este like skrivdata-metoder: // I klasse Studet: public void skrivdata() { System.out.pritl("Nav: " + av); System.out.pritl("Telefo: " + tlfr); System.out.pritl("Studieprogram: " + program); // I klasse Asatt: public void skrivdata() { System.out.pritl("Nav: " + av); System.out.pritl("Telefo: " + tlfr); System.out.pritl("Løstri: " + løstri); System.out.pritl("Timer: " + atalltimer); 17

18 Nøkkelordet super Nytt Nøkkelordet super brukes til å aksessere variable / metoder i objektets superklasse. Dette ka vi bruke til å la superklasse Perso ha e geerell skrivdata, som så kalles i subklassee: // I klasse Perso: public void skrivdata() { System.out.pritl("Nav: " + av); System.out.pritl("Telefo: " + tlfr); // I klasse Studet: public void skrivdata() { super.skrivdata(); System.out.pritl("Studieprogram: " + program); // Tilsvarede i klasse Asatt: public void skrivdata() { super.skrivdata(); System.out.pritl("Løstri: " + løstri); System.out.pritl("Timer: " + atalltimer); 18

19 class StudetRegister { public static void mai(strig [] args) { Studet stud = ew Studet(); Perso pers = ew Perso(); stud.skrivdata(); pers.skrivdata(); // Her brukes defiisjoe i Studet // Her brukes defiisjoe i Perso Perso pers Perso pers2 = stud; pers2.skrivdata(); // Hvilke defiisjo beyttes her? Studet stud Perso pers2 void skrivdata() { System.out.pritl("Nav: " + av); System.out.pritl("Telefo: " + tlfr); void skrivdata() { System.out.pritl("Nav: " + av); System.out.pritl("Telefo: " + tlfr); Regel: Det er objekttype, ikke referasetype, som avgjør hvilke defiisjo som gjelder år e metode er virtuell. void skrivdata() { super.skrivdata(); System.out.pritl("Studprgm: " + prgm); 19

20 20 Omdefierig av variable E subklasse ka også omdefiere (skyggelegge) variable som er defiert i superklasse. MEN: Dette bør IKKE brukes!!! Sjelde ødvedig Reduserer lesbarhete Ka føre til uvetet oppførsel Og mer treger dere ikke å vite om det

21 Klassehierarki: Et eksempel fra Java-biblioteket ArrayList AttributeListt RoleList RoleUresolvedList Oppgave: Slå opp på ArrayList i Javabiblioteket og se at de tre klassee er direkte subklasser av ArrayList (direkte aboer i klassehierarkiet) ( Direct Kow Subclasses )

22 Klassehierarki: Også fra Java-biblioteket: Feil-klasser Object Throwable Error Exceptio Virtual- Machie- Error IOError RutimeExceptio IOExceptio Oppgave: Slå opp i Javabiblioteket AWTExceptio... og ca. 60 adre

23 Repetisjo: De boolske operatore istaceof hjelper oss å fie ut av hvilke klasse et gitt objekt er, oe som er yttig i mage tilfeller: class TestFrukt { public static void mai(strig[] args) { Eple e = ew Eple(); skrivut(e); 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!"); Frukt class Frukt {.. class Eple exteds Frukt {.. class Appelsi exteds Frukt {.. Eple Appelsi 23

24 Me: Prøv å ugå istaceof Istedefor å teste hvilke klasse objektet er av, be objektet gjøre jobbe selv: Bedre program: class TestFrukt2 { public static void mai(strig[] args) { Fruk2 f = ew Eple2(); f.skrivut( ); abstract class Frukt2 { abstract public void skrivut( ); Bruk heller polymorfi hvis mulig class Eple2 exteds Frukt2 { public void skrivut( ) { System.out.pritl("Jeg er et eple!"); class Appelsi2 exteds Frukt2 { public void skrivut( ) { System.out.pritl("Jeg er e appelsi!"); 24

25 god Biler og mer bruk av istaceof HashMap <Strig, Bil> h; (og litt castig (typekoverterig)) h = ew HashMap <Strig, Bil> ( ); h... for (Bil b: h.values()) { Strig r = b.regnr; // kall på virtuell metode: b.skatt( ); if (b istaceof Persobil) { Persobil pb = (Persobil) b; it pas = pb.hetatpass(); else { if (b istaceof Lastebil) { Lastebil ls = (Lastebil) b; double lv = ls.hetlastevekt(); class Bil { Strig regnr; public void skatt(){... class Persobil exteds Bil { it atpass; public void skatt(){... class Lastebil exteds Bil { double lastevekt; p.. void skatt(){... class Drosje exteds Persobil { it LøyveNr; p.. void skatt(){... 25

26 Oppgave Brev 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: Kjaerli Lovlig Ulovlig Sokad s1 = ew Sokad(); Sokad s2 = ew Brev(); Brev b1 = ew Sokad(); Brev b2 = (Brev) ew Sokad(); Sokad s3 = ew Kjaerlighetsbrev(); Sokad s4 = (Sokad) ew Kjaerlighetsbrev(); Brev b3 = (Sokad) ew Brev(); 26

27 Hvorfor bruker vi subklasser? 1. Klasser og subklasser avspeiler virkelighete Bra år vi skal modellere virkelighete i et datasystem 2. Klasser og subklasser avspeiler arkitekture til datasystemet / dataprogrammet Bra år vi skal lage et oversiktlig stort program 3. Klasser og subklasser ka brukes til å forekle og gjøre programmer mer forstålig, og spare arbeid: Gjebruk av programdeler Bottom up programmerig Lage verktøy Top dow programmerig Nå skal vi se litt på 3 Postulere verktøy 27

28 Gjebruk av deler av programmer Viktig å ikke måtte skrive y kode hver gag ma skal programmere oe ytt Gjebruk mest mulig av kode du har skrevet før Lag kode med heblikk på et de skal brukes (til oe likede) seere Lag biblioteker Bruk adres bibliotek Javas eget bibliotek Strukturerig av kode ( gjebruk i samme program) IN1000: Gjebruk av metoder og klasser 28

29 Gjebruk ved hjelp av klasser / subklasser Ved sammesetig (komposisjo) (i Oblig 1, pesum i IN1000): Deklarer referaser til objekter av klasser du har skrevet før (eller biblioteksklasser) Lag objekter av disse klasse Kall på metoder i disse klassee Ved arv (ytt i IN1010): Lag e y klasse som utvider de eksisterede klasse (spesielt viktig ved litt større klasser) Føy til ekstra variable og metoder 29

30 Gjebruk ved sammesetig / komposisjo Omtret som i oblig 1. Ikke oe ytt class Demoklasse { HashMap<Strig,Perso> veer = ew HashMap<Strig,Perso>(); Husdyr h = ew Hud( Passopp ); Strig av = Ole-Morte"; /* + Diverse metoder */ veer, h og av er deklarert som referasevariable som peker på objekter av adre klasser som allerede eksisterer. h veer av Ole-Morte 30

31 Gjebruk ved arv (domeet er et bibliotek) Objekter av klassee class Bok { protected Strig tittel, forfatter; class Fagbok exteds Bok { protected double dewey; class Skjølitterærbok exteds Bok { protected Strig sjager; class Bibliotek { Bok b1 = ew Fagbok(); Bok b2 = ew Skjølitterærbok(); Arv Komposisjo Gjebrukes Gjebrukes 31

32 Når skal vi bruke arv? Geerelt: Ved er-e relasjo mellom objektee. E Studet er e Perso E Asatt er e Perso Hva med relasjoee roma bok? E roma er e bok (arv). kapittel bok? Et kapittel er ikke e bok, me et kapittel er e del av e bok, og e bok har/består av kapitler (sammesetig) Relasjoer som har-e og består-av skal ikke modelleres som subklasser, me ved hjelp av sammesetig (som datafelt (kostater/variable)). Arv vs. delegerig 32

33 Oppgave Hvor er det aturlig å bruke komposisjo og hvor er det aturlig med arv i disse tilfellee? Relasjo mellom Komposisjo Arv vare - varelager yhetskaal - kaal perso - persoregister cd - spor (sager) PC - datamaski gaupe - rovdyr fly - trasportmiddel motor - bil 33

34 Object: tostrig og equals Klasse Object ieholder bl.a. tre viktige metoder: Strig tostrig() returerer e Strig-represetasjo av objektet boolea equals(object o) sjekker om to objekter er like (i Object det samme som pekerlikhet) it hashcode( ) returerer e hash-verdi av objektet 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 (pga. polymorfi) 34

35 Eksempel på tostrig og equals class Pukt { protected it x, y; Pukt(it x0, it y0) { x = x0; y = y0; Ata: class Pukt2 { protected it x, y; Pukt2(it x0, it y0) { x = x0; y = y0; public Strig tostrig() { retur ("x = "+x+" y = "+y); 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 å: public boolea equals(object o) { if (!(o istaceof Pukt2)) retur false; Pukt2 p = (Pukt2) o; retur x == p.x && y == p.y; p1.tostrig(); p1.equals(p2); Pukt@f5da06 false q1.tostrig(); q1.equals(q2); x = 3 y = 4 true 35

36 Kostruktører Ikke oe ytt Bruk av kostruktører år vi opererer med "ekle" klasser er gaske ukomplisert. Når vi skriver Pukt p = ew Pukt(3,4); skjer følgede: class Pukt { protected it x, y; 1. Det settes av plass i iter-miet til et objekt av klasse Pukt og til referasevariable p. 2. Variablee x og y blir opprettet ie i objektet (istasvariable) 3. Kostruktør-metode blir kalt med x0=3 og y0=4. 4. Etter at kostruktøre har satt x=3 og y=4, blir verdie av høyreside i tilordige Pukt p = ew Pukt(3,4) adresse (e referase, peker) til det ye objektet. 5. Tilordige Pukt p = utføres, dvs p settes lik adresse / referase til objektet. av: p type: Pukt Pukt(it x0, it y0) { x = x0; y = y0; Pukt(it x0, it y0) av: x0 3 type: it av: x x = x0; y = y0; type: it av: y0 4 type: it av: y 3 4 type: it 36

37 Kostruktører og arv 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? B A bpeker A() B() B 37

38 Kostruktører og arv (forts.) Nytt 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 38

39 Kall på super-kostruktøre Nytt Superklasses kostruktør ka kalles fra e subklasse ved å si: super(); - 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( ) helt først i kostruktøre år programmet kompileres. Hvis e klasse ikke har oe kostruktør, legger Java i e tom kostruktør med kallet super(); 39

40 NB! Det er forskjell på super. og super(...)

41 Eksempel 1 Ata at vi har følgede klasser: class Perso { proteceted Strig fødselsr; Perso() { fødselsr = "; class Studet exteds Perso { protected it studid; Studet() {... Ata to kostruktører: Studet() { super(); studid = 0; eller: Studet() { studid = 0; Disse to er helt ekvivalete! Hva skjer hvis Studet ikke har oe kostruktør :? class Studet exteds Perso { it studid = 0; Svar: det går bra 41

42 Eksempel 2 Her er fire forslag til kostruktører: Studet() { studid = 0; Ata at vi har følgede klasser: class Perso { protected Strig fødselsr; Perso(Strig fr) { fødselsr = fr; class Studet exteds Perso { protected it studid; Studet() {... Studet() { super( 12345"); studid = 0; Studet(Strig r){ super(r); studid = 17; Studet(Strig r, it id){ super(r); studid = id; Hvilke virker? Diskuter! 42

43 Eksempel 3 class Bygig { Bygig() { System.out.pritl("Bygig"); class Bolighus exteds Bygig { Bolighus() { System.out.pritl("Bolighus"); Hva blir utskrifte fra dette programmet? class Blokk exteds Bolighus { Blokk() { System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); 43

44 Når programmet kompileres class Bygig { Bygig() { super(); System.out.pritl("Bygig"); // class Bygig class Bolighus exteds Bygig { Bolighus() { super(); System.out.pritl("Bolighus"); // class Bolighus Java føyer selv på super() i disse tre kostruktøree før programmet utføres class Blokk exteds Bolighus { Blokk() { super(); System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); // class Blokk 44

45 Når programmet utføres 4. class Bygig { Bygig() { super(); System.out.pritl("Bygig"); // class Bygig class Bolighus exteds Bygig { Bolighus() { super(); System.out.pritl("Bolighus"); // class Bolighus 5. Til Object si kostruktør class Blokk exteds Bolighus { Blokk() { super(); System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); // class Blokk Her starter eksekverige 1. 45

46 Når programmet utføres (forts.) 7. Nå er Bygig skrevet ut 8. Nå er Bolighus skrevet ut 9. Nå er Blokk skrevet ut class Bygig { Bygig() { super(); System.out.pritl("Bygig"); // class Bygig class Bolighus exteds Bygig { Bolighus() { super(); System.out.pritl("Bolighus"); // class Bolighus class Blokk exteds Bolighus { Blokk() { super(); System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); // class Blokk 6. Tilbake fra Object si kostruktør 46

47 Eksempel 4 class Bygig { Bygig() { System.out.pritl("Bygig"); Hva skjer i dette eksempelet? class Bolighus exteds Bygig { Bolighus(it i) { System.out.pritl("Bolighus r " + i); class Blokk exteds Bolighus { Blokk() { System.out.pritl("Blokk"); Merk: Kostruktøre i klasse Bolighus har å e parameter. public static void mai(strig[] args) { ew Blokk(); 47

48 Når programmet kompileres class Bygig { Bygig() { super(); System.out.pritl("Bygig"); // class Bygig Java legger igje til kall på super() i alle kostruktøree. class Bolighus exteds Bygig { Bolighus(it i) { super(); System.out.pritl("Bolighus"); // class Bolighus class Blokk exteds Bolighus { Blokk() { super(); System.out.pritl("Blokk"); public static void mai(strig[] args) { ew Blokk(); // class Blokk 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. 48

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

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

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

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 2005 Uke 4, 1. februar Arv og subklasser, del 2

INF1010 våren 2005 Uke 4, 1. februar Arv og subklasser, del 2 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

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

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

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

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

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

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister INF1010 våren 2010 Torsdag 4. februar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser (2 uker) Generalisering - spesialisering Gjenbruk av klasser Ved sammensetning

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

Uke 5, 27. januar Arv og subklasser del I. Stein Gjessing Institutt for informatikk

Uke 5, 27. januar Arv og subklasser del I. Stein Gjessing Institutt for informatikk 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

INF1010 våren Arv og subklasser del I

INF1010 våren Arv og subklasser del I INF1010 våren 2010 Torsdag 4. februar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser (2 uker) 2 Hva er en subklasse? En klasse, K, beskriver objekter med visse

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

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

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

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 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling)

INF1010 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling) INF1010 våren 2012 Torsdag 9. februar Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling) Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du

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

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

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

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

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

INF1010, 21. januar 2016. Klasser med parametre = Parametriserte klasser = Generiske klasser

INF1010, 21. januar 2016. Klasser med parametre = Parametriserte klasser = Generiske klasser INF1010, 21. januar 2016 Klasser med parametre = Parametriserte klasser = Generiske klasser Stein Gjessing Inst. for Informatikk Universitetet i Oslo Først litt repetisjon fra i går class LagBiler { public

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

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

INF1010 våren Arv og subklasser del 1 pluss (hvis vi har tid) litt om Unntak, IO og Scanner-klassen

INF1010 våren Arv og subklasser del 1 pluss (hvis vi har tid) litt om Unntak, IO og Scanner-klassen INF1010 våren 2014 Onsdag 5. februar Arv og subklasser del 1 pluss (hvis vi har tid) litt om Unntak, IO og Scanner-klassen Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært

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

Uke 12 IN3030 v2019. Eric Jul PSE-gruppa Ifi, UiO

Uke 12 IN3030 v2019. Eric Jul PSE-gruppa Ifi, UiO Uke 12 IN3030 v2019 Eric Jul PSE-gruppa Ifi, UiO Oblig 5 Kovekse Ihylliga Itroduksjo De kovekse ihylliga til pukter Oblig 5 Hva er det, defiisjo Hvorda ser de ut Hva brukes de til? Hvorda fier vi de? 24

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

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

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

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

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

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

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal

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

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

Kapittel 7: Mer om arv

Kapittel 7: Mer om arv Kapittel 7: Mer om arv 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 Cappelen Akademisk Forlag,

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

INF1000: Forelesning 6. Klasser og objekter del 1

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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF3110/4110 Programmeringsspråk Eksamensdag: 3. desember 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8 sider. Vedlegg:

Detaljer

Løsningsforslag til eksamen i INF1000 våren 2006

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

Detaljer

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

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Arv. Book book1 = new Book(); book1. title = Sofies verden class Book { String title; } class Dictiona ry extends Book { Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

Runtimesystemer - II. Funksjoner som parametere. Virtuelle metoder

Runtimesystemer - II. Funksjoner som parametere. Virtuelle metoder Runtimesystemer - II Funksjoner som parametere Virtuelle metoder Parameteroverføring Call by value Call by reference Call by value-result Call by name 04/04/14 1 FUNKSJONER SOM PARAMETERE 04/04/14 2 Eksempel

Detaljer

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne

Detaljer

Differensligninger Forelesningsnotat i Diskret matematikk Differensligninger

Differensligninger Forelesningsnotat i Diskret matematikk Differensligninger Differesligiger Forelesigsotat i Diskret matematikk 017 Differesligiger I kapittel lærte vi om følger og rekker. Vi studerte både aritmetiske og geometriske følger og rekker. Noe følger og rekker er imidlertid

Detaljer

Avsnitt 8.1 i læreboka Differensligninger

Avsnitt 8.1 i læreboka Differensligninger Diskret Matematikk Fredag 6. ovember 015 Avsitt 8.1 i læreboka Differesligiger I kapittel lærte vi om følger og rekker. Vi studerte både aritmetiske og geometriske følger og rekker. Noe følger og rekker

Detaljer

Forkunnskaper i matematikk for fysikkstudenter. Derivasjon.

Forkunnskaper i matematikk for fysikkstudenter. Derivasjon. Defiisjo av derivert Vi har stor ytte av å vite hvor raskt e fuksjo vokser eller avtar Mer presist: Vi øsker å bestemme stigigstallet til tagete til fuksjosgrafe P Q Figure til vestre viser hvorda vi ka

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

OM TAYLOR POLYNOMER. f x K f a x K a. f ' a = lim x/ a. f ' a z

OM TAYLOR POLYNOMER. f x K f a x K a. f ' a = lim x/ a. f ' a z OM TAYLOR POLYNOMER I dette otatet, som utfyller avsitt 6. i Gullikses bok, skal vi se på Taylor polyomer og illustrere hvorfor disse er yttige. Det å berege Taylor polyomer for håd er i prisippet ikke

Detaljer

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

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

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Abstrakte klasser og grensesnitt, redefinering av metoder Java-programmering Arv og bruk av abstrakte klasser Eclipse Undersøke instanser i Eclipse 1 Dagens

Detaljer

ÅMA110 Sannsynlighetsregning med statistikk, våren Kontinuerlige tilfeldige variable, intro. Kontinuerlige tilfeldige variable, intro.

ÅMA110 Sannsynlighetsregning med statistikk, våren Kontinuerlige tilfeldige variable, intro. Kontinuerlige tilfeldige variable, intro. ÅMA Sasylighetsregig med statistikk, våre 6 Kp. 4 Kotiuerlige tilfeldige variable og ormaldelige Kotiuerlige tilfeldige variable, itro. (eller: Kotiuerlige sasylighetsdeliger) Vi har til å sett på diskrete

Detaljer

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

EKSAMEN Løsningsforslag

EKSAMEN Løsningsforslag ..4 EKSAMEN Løsigsforslag Emekode: ITF75 Dato: 6. desember Eme: Matematikk for IT Eksamestid: kl 9. til kl. Hjelpemidler: To A4-ark med valgfritt ihold på begge sider. Kalkulator er ikke tillatt. Faglærer:

Detaljer

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først) INF1010 våren 2019 Onsdag 30. januar Mer om unntak i Java (med litt repetisjon av I/O først) Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type:

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

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

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

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

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

Dagens tema Kapittel 8: Objekter og klasser

Dagens tema Kapittel 8: Objekter og klasser Dagens tema Kapittel 8: Objekter og klasser Hva er objekter og klasser? Programmering med objekter Klassedeklarasjoner Generering av objekter Tilgang til elementer i objektene Objekt- og klassevariable

Detaljer

INF1010 våren 2018 tirsdag 23. januar

INF1010 våren 2018 tirsdag 23. januar INF1010 våren 2018 tirsdag 23. januar I/O og litt om bruk av unntak i Java Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type: Scanner boolean

Detaljer

INF2440 Uke 4, v2018 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model. Eric Jul PSE, Inst.

INF2440 Uke 4, v2018 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model. Eric Jul PSE, Inst. INF2440 Uke 4, v2018 Om å samle parallelle svar, matrisemultiplikasjo og The Java Memory Model Eric Jul PSE, Ist. for iformatikk 1 Hva så vi på i uke 3 1. Presiserig av hva som er pesum 2. Samtidig skrivig

Detaljer

UNIVERSITETET I OSLO

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

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

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

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo INF1010 Våren 2015 Feilsituasjoner og unntak i Java (Engelsk: Exception) Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Jeg prøvde å bestille billett med Air France:

Detaljer

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF, 22. mai 23 Prøveeksamen 23 (Eksamen 2. juni 22) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Oppgave a Tegn klassehierarkiet for de 9 produkttypene som er beskrevet over. Inkluder også

Detaljer

Klasser, objekter, pekere og UML. INF1000 - gruppe 13

Klasser, objekter, pekere og UML. INF1000 - gruppe 13 Klasser, objekter, pekere og UML INF1000 - gruppe 13 Klasse Beskriver ofte ting fra den virkelige verden Veldig ofte et substantiv (Person, Bok, Bil osv.) class Person { String navn; int alder; } class

Detaljer

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE Eme: Diskret matematikk Gruppe(r): Emekode: FO 019A Dato: 12.12.200 Faglig veileder: Ulf Uttersrud Eksamestid: 9-14 Eksamesoppgave består av: Atall sider

Detaljer

INF1010 våren Grensesnitt

INF1010 våren Grensesnitt INF1010 våren 2013 Torsdag 24. januar Grensesnitt Stein Gjessing Institutt for informatikk Dagens tema n n Norsk: Grensesnitt Engelsk: Interface n Les notatet Grensesnitt i Java av Stein Gjessing 2 Hva

Detaljer

Econ 2130 Forelesning uke 11 (HG)

Econ 2130 Forelesning uke 11 (HG) Eco 130 Forelesig uke 11 (HG) Mer om ormalfordelige og setralgreseteoremet Uke 1 1 Fra forrige gag ~ betyr er fordelt som. ~ N( µσ, ) E( ) = µ, og var( ) = σ Normalfordelige er symmetrisk om μ og kotiuerlig

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

INF1010 våren Grensesnitt

INF1010 våren Grensesnitt INF1010 våren 2014 Onsdag 22. januar Grensesnitt Stein Gjessing Institutt for informatikk Dagens tema n n Norsk: Grensesnitt Engelsk: Interface n Les notatet Grensesnitt i Java av Stein Gjessing n Det

Detaljer

To måter å programmere på. Java 12. Programmering med objekter. Statisk programmering

To måter å programmere på. Java 12. Programmering med objekter. Statisk programmering INF 101-10. mars 2003 Mer om klasser og objekter Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 12 To måter å programmere på Statisk programmering:

Detaljer