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



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

Abstrakte metoder og klasser. Abstrakte metoder og klasser. Uke 9 INF1010, 27. februar 2007, Abstrakte klasser og grensesnitt (interface)

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

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

Abstrakte metoder og klasser. Abstrakte metoder og klasser

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

Løsningsforslag til eksamen i INF1000 våren 2006

Uke 6 INF1010, 5. februar 2008, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo

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

Tråder i Java Parallelle programmmer og programbiter

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

Stabler, Køer og Lister. ADT er

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

INF1010 våren Arv og subklasser - del 2

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

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

"Nelsons kaffebutikk"

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

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

Abstrakte metoder og klasser

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

Repetisjon. INF gruppe 13

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

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

Inf1000 (Uke 10) HashMap og ArrayList

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

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

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

INF Løsning på seminaropppgaver til uke 8

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

OPPGAVE 5b og 8b Java Kode

EKSAMEN I FAG TDT4100 Objektorientert programmering. Fredag 2. juni 2006 Kl

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

Institutt for informatikk. INF1010, 18. februar 2010, Inst for Informatikk

TOD063 Datastrukturer og algoritmer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Kontinuasjonseksamen

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

INF Seminaroppgaver til uke 3

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

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

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

INF våren januar, uke 3 - Oversikt og forutsetninger Java datastruktur-tegninger

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

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

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

UNIVERSITETET I OSLO

INF1010 våren Arv og subklasser - del 2

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

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

INF1010 våren Arv og subklasser, del 2

INF1010 våren Arv og subklasser - del 2

INF1010 Arv. Marit Nybakken 2. februar 2004

Gjennomgang av eksamen H99

Dagens tema: Mer av det dere trenger til del 1

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

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

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

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

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

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

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

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

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

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

Mer om utvalgsundersøkelser

Abstrakte metoder og klasser

INF1010. Stein Michael Storleer (michael) Lenkelister

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

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

Del 3: Evaluere uttrykk

Generelt om oblig 3. Oppgaveteksten kort sammendrag. Deloppgaver/menyvalg 15/03/2010. INF1000 Forelesning 9

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

Kapittel 9: Sortering og søking Kort versjon

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

INF1010, 10. februar 2009, Konstruktører. Inst for Informatikk

INF1010 våren Arv og subklasser del 1

UNIVERSITETET I OSLO

Oppsummering del 2. Læringsmål Viktigste Java-elementer Eksamen Til sist. Læringsmål Hovedpunkter Tilbakemelding Eksamen. IN1010 uke 17 våren 2019

Læringsmål for forelesningen

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

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

Kapittel 7: Mer om arv

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

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato:

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

INF1010 våren Arv og subklasser del 1

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

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

INF1010 våren 2018 tirsdag 23. januar

Dagens forelesning. Husk prøveeksamen Fredag 15/3-13 kl 12 i R1. Iterator-teknikken. Eksempel med bruk av Iterator og Iterable-grensesnittene

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

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

Kontinuasjonseksamen

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

Transkript:

"# %% & ' ()*,"""). / " %% &%% / ( 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 ) ("?/& = C D ') A ' F ) G.)" 8 &(& ( ) H.)2 > </ A 5)(A 5&@6 &)).). I 0 ) )(') 6. /.A0./>)/ /"""J/ A?.""" ))A 5&A JAK.. @6AJ).?AJ&""" </ ' 0.( E..

J)(.( Dokumet UtlåbartDokumet Dokumet #.. IkkeLåbartDokumet Bok CD Video Tidskrift Bok CDU VideoU UtlåbarBok IkkeLåbarBok UtlåbarCD IkkeLåbarCD FlerbidsverkU AtikvariskBok AtikvariskUtlåbCD UtlåbartTid sskriftr IkkeLåbartTi dsskriftr Atikvarisk tidsskriftr FlerbidsverkU AtikvariskUtlåbCD TidsskriftrU Bok CD Video AtikvariskBok Tidsskriftr L ))&A Dokumet 8 > iterface TilUtlå UtlåbarBok Verk Bok CD Video AtekvUtlåbrCD AtikvariskBok IkkeLåbarCD Utlåbart Tidsskriftr Utlåbart, Atekvarisk Tidsskrift iterface Atikvarisk Tidskriftr 0 &. 3 6" ). IkkeLåbartTids skriftr Atikvarisk tidsskriftr 0H2 0(.. ( 0 ) / ). )." 0 ) K M/ )

') 8& /. ) ) H2HD &2A Skatt 0) 3( class Bil { Strig regnr; class Persobil exteds Bil { it atpass; class Lastebil exteds Bil { double lastevekt; class Drosje exteds Persobil { it LøyveNr; Bil Persobil iterface Skatt { double toll( ) ; it momssats() ; Skatt Lastebil Drosje "# Miljo #)) D iterface Miljo { it co2utslipp ( ); boolea svaemerket ( ) ; Miljo J' ) 'F3A Skatt Lastebil Bil Persobil Drosje Miljo class DrosjeBil exteds Drosje implemets Skatt, Miljo { double momsgrulag = 150000; it utslipp = 200; public double toll( ) { retur momsgrulag * 0.5; public it momssats( ) {retur 20; public it co2utslipp ( ) {retur utslipp; public boolea svaemerket () { retur false; ( H 2 HD 2 LastebilMedSkattogMiljo DrosjeBil Me metodee må (dessverre) skrives på ytt hver gag de brukes = class LastebilMedSkattogMiljo exteds Lastebil implemets Skatt, Miljo { double ikjopspris = 200000; it utslipp = 00; public double toll( ) { retur ikjopspris * 0.1; H 2 public it momssats( ) {retur 20; public it co2utslipp ( ) {retur utslipp; HD 2 public boolea svaemerket () { retur false; C

0 ) B /.)/ A 5 5 B B BD D & # D & &J 8 ) > % & #? #)) D.)) )) E class Bil { Strig regnr; void skriv(){ System.out.pritl( Registrerigsummer: " regnr); class Persobil exteds Bil { it atpass; void skriv (){ super.skriv(); System.out.pritl("Atall pass.: " atpass); class Lastebil exteds Bil { double lastevekt; void skriv (){ super.skriv(); System.out.pritl("Lastevekt: " lastevekt); class Drosje exteds Persobil { it loyvenr; void skriv (){ super.skriv(); System.out.pritl("Løyve Nr.: " loyvenr); 6 5 BD""""" class DrosjeBil exteds Drosje implemets Skatt, Miljo { double momsgrulag = 150000; it utslipp = 200; public double toll( ) { retur momsgrulag * 0.5; public it momssats( ) {retur 20; public void skrivskatt( ) { System.out.pritl("MomsGrulag" momsgrulag); public it co2utslipp ( ) {retur utslipp; public boolea svaemerket () { retur false; public void skrivmiljo() { System.out.pritl("Utslipp " utslipp); public void skriv( ) { System.out.pritl( DrosjeBil: "); super.skriv( ); skrivskatt( ); skrivmiljo( ); D & L class LastebilMedSkattogMiljo exteds Lastebil implemets Skatt, Miljo { double ikjopspris = 200000; it utslipp = 00; public double toll( ) { retur ikjopspris * 0.1; public it momssats( ) {retur 20; public void skrivskatt( ) { System.out.pritl("Ikjøpspris " ikjopspris); public it co2utslipp ( ) {retur utslipp; public boolea svaemerket () { retur false; public void skrivmiljo( ) { System.out.pritl("Utslipp " utslipp); )., '".")HB &AN.)" D D & 6. D H23

5 5 ( BD D % &' # 6 5 5 5 B B BD D & # D & &J? < < 6 6 5 6 # #)) D #)) D & &J D )., '".") HB &AN.)" D.)) )) D.)). D J Dokumet iterface TilUtlå Bok CD BokTilUtlaa BokIkkeUtlaa CDTilUtlaa CDIkkeUtlaa iterface TilUtlå BokTilUtlaa Bok Dokumet BokIkkeUtlaa Ordet abstract ka sløyfes før metodeavet i et iterface (det er jo helt opplagt) abstract class Dokumet { Strig tittel; abstract class Bok exteds Dokumet { Strig forlag; it trykigsår; iterface TilUtlaa { abstract void låe(strig låer) ; abstract void levere() ; abstract boolea utlåt() ; static fial Strig ige = "ige"; // Slutt iterface TilUtlaa

5J )/ ) A iterface TilUtlaa BokTilUtlaa Bok Dokumet BokIkkeUtlaa 5 5J( / ) 5 ) J" # ) ; class BokTilUtlaa exteds Bok implemets TilUtlaa { Strig låer = ige; public void låe (Strig l) { låer = l; public void levere() { låer = ige; public boolea utlåt() { retur låer = ige; // Slutt class BokTilUtlaa class BokIkkeUtlaa exteds Bok { = iterface TilUtlaa { abstract void låe(strig låer) ; abstract void levere() ; abstract boolea utlåt() ; STATIC fial Strig ige = ige"; class BokTilUtlaa exteds Bok implemets TilUtlaa { Strig låer = ige; public void låe (Strig l) { låer = l; public void levere() { låer = ige; public boolea utlåt() { retur låer = ige; Metodee i et iterface er veldig virtuelle Dette er de tre metodee som vi må love å implemetere C iterface TilUtlaa { abstract void låe(strig låer) ; abstract void levere() ; abstract boolea utlåt() ; static fial Strig ige = ige"; @67 6., ). @6J 7@6) J, /M )./,/M ).,/M )../,. /;M *.@6J iterface TilUtlå CDTilUtlaa Dokumet CD CDIkkeUtlaa Her er de tre metodee igje D )/. /)/)/ E?/ )( & 6O) )"?A0) / O. " 0)..)(&/ " @6 7@6, E

6. ( )*, './/0 1# 2, 3 & )#.//0 3 1* 2 51 ), A Først atall poster på file For hver post: dokumettype (BU, BI, CU eller CI) tittel Hvis Bok: forlag år Hvis BokTilUtlå: Også låer Hvis CD: kompoist / artist / musikkforlag Hvis CDTilUtlå: Også låer L ifil 5 6* 6.P 3 atdok 6. void lesfrafil() Dokumet d = ull; Strig dokumettype; I ifil = ew I( dokumetfil.txt ); atdok = ifil.iit( ); for (it i=1; i<=atdok; i) { dokumettype = ifil.iword( ); if (dokumettype.equals("bu")) d = ew BokTilUtlaa(); else if (dokumettype.equals("bi")) d = ew BokIkkeUtlaa(); else if (dokumettype.equals("cu")) d = ew CDTilUtlaa(); else if (dokumettype.equals("ci")) d = ew CDIkkeUtlaa(); d.lesfra(ifil); alledokumeter.put(d.tittel,d); // Slutt for 5 ) 7# )7# 5 15 7# 157# 5 6# 6.P 3 D / 6.P void låe() utfil void skrivtilfil() Dokumet d = ull; Strig dokumettype; Out utfil = ew Out( dokumetfil.txt ); Iterator e = alledokumeter.values().iterator(); while (e.hasnext()) { d = (Dokumet) e.ext(); d.skrivtilfil(fil); // slutt while 6. e 5 ) 7# )7# 5 15 7# 157# void låe() throws IOExceptio { boolea utlåt() Object d = ull; Strig h; void levere() System.out.prit( Tittel: "); h = i.readstrig( ); d = alledokumeter.get(h); if (d==ull) System.out.pritl("Beklager, dee har vi ikke"); else if (d istaceof TilUtlaa) { TilUtlaa t = (TilUtlaa) d; if (t.utlåt()) System.out.pritl("Beklager, utlåt"); else { System.out.prit( Låers av: "); Strig = i.readstrig( ); t.låe(); // Slutt if (d istaceof TilUtlaa) else System.out.pritl("Beklager, dee låer vi ikke ut"); // Slutt låe

Klasse og iterfacetilhørighet (igje) leveretilbake i DokumetRegister Test med operatore istaceof if (d istaceof TilUtlaa) p istaceof C Gir TRUE dersom p peker på et objekt av klasse C eller e subklasse av C, eller dersom p peker på e klasse som implemeterer iterfacet C Edrig med castig d Object d = alledokumeter.get(h); TilUtlaa t = (TilUtlaa) d; OK, dersom d er et objekt av e av klassee BokTilUtlaa eller CDTilUtlaa (dvs. spiller rolle TilUtlaa). void Låe() i DokumetRegister ka dermed brukes med hell for alle klasser som implemeterer iterface TilUtlå (k.eks. låe klær, låe biler ) 5 ) 7# )7# t ser bare TilUtlåegeskapee J, 6.M. ( '".")2JAN (M" M6.6."( MM. '".")N5N J, J MJ "./, " '".")NJN '".")N5./N *. J void låe() boolea utlåt() void levere() * 0. F( 1F (" #. ; QB Q.) P, 8(D) """ <, """, """").( """ *. < class Object { // Alle objekters mor boolea equals(object obj)... Object cloe()... public fial class Strig exteds Object { public fial class Math exteds Object { public class Date exteds Object { public abstract class Caledar exteds Object { public iterface Map {... public iterface Collectio {... public iterface Iterator {... Alle klasser er subklasser av class Object. Hvis klassedeklarasjoe ikke har med exteds, tolker kompilatore det som exteds Object R.( """ *. P public abstract class AbstractMap exteds Object implemets Map {... Du må altså opprette et objekt av de ytre klasse før du får lov til å lage objekter av de idre klasse = public class HashMap exteds AbstractMap implemets Map, Cloeable, Serializable { Object get(object key) { void put (Object key, Object value) {... C

8(D) class HashMap exteds AbstractMap implemets Map, Cloeable, Serializable { // Hemmelig datastruktur public void put(object key, Object value) {... public Object remove(object key) {... public Object get(object key) {... public boolea cotaiskey(object key) {... public boolea cotaisvalue(object value) {... public it size( ) {... public Collectio values( ) {... // slutt class HashMap Java har etter hvert mage klasser som ka brukes til å ta vare på objekter: Vector, ArrayList, Collectio, HashMap HashSet, LikedList, Stack, TreeSet, TreeMap,...) E ).@, ).S ). """ )., ).(7 ).# 7 8(D)""", 89 : ),""" )@, ).,.M: """.. ).).""",""" """ ).@.,.M: """.. """ 8(D) @ HashMap har altså sie ege implemetasjoer av Collectio og Iterator som er hemmelig for oss utefor, me side alle metodee er kjet ka vi kalle på disse (på este side) ) alledokumeter void visalledokumeter() Dokumet d; Iterator e = alledokumeter.values().iterator(); while (e.hasnext()) { d = (Dokumet) e.ext(); d.vispaaskjerm(); // slutt while Collectio Ukjet2 Iterator Ukjet1 Iterator iterator () boolea hasnext() Object ext() d e mitabell mitabell Collectio values() L 0( 3 JBBM ) 5.%% %% & %')% / ) 5@) 5.',""""(%5.'%""" D'.'.' )F )A1*) / & 57M6J')?'') & &" 6O.) M// ')" 8) / & (.("