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

Størrelse: px
Begynne med side:

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

Transkript

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

2 Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen av en metode betyr at metoden ikke inneholder noe program / kode ( ; istedenfor {... (eksempel neste side) ) Subklasser må da gi kode til denne metoden. Abstrakte klasser klasse med abstract før class kan (men må ikke) inneholde abstrakte metoder En klasse med en abstrakt metode må deklareres som en abstrakt klasse. Kan ikke lage objekter av abstrakte klasser (må vente til vi har en ikke-abstrakt subklasse) 2

3 Abstrakte metoder og klasser abstract class Ansatt { String navn; double timelonn; abstract double beregnbonus(); class Deltidsansatt extends Ansatt { double beregnbonus() { return 0; Ikke lov å si new Ansatt()! navn timelonn beregnbonus(); Subklassene arver på vanlig måte alle egenskapene fra den abstrakte superklassen Heltidsansatt objekt navn timelonn class Heltidsansatt extends Ansatt { int ansiennitetsfaktor; double beregnbonus() { return timelonn* ansiennitetsfaktor; beregnbonus(); ansiennitetsfaktor beregnbonus() Ellers helt som vanlige subklasser med polymorfi (virtuell metoder) 3

4 Pekere av abstrakte typer (selv om det ikke finnes slike objekter) Ansatt[ ] allepersoner Deltidsansatt objekt Heltidsansatt objekt navn timelonn beregnbonus(); navn timelonn beregnbonus(); beregnbonus() return 0; Deltidsansatt ansiennitetsfaktor beregnbonus() Heltidsansatt return timelonn* ansiennitetsfaktor 4

5 Når bruker vi abstrakte metoder og klasser? Abstrakte klasser En abstrakt klasse er en superklasse det ikke kan eller skal lages objekter av. Det er ikke lov å si new A() på den abstrakte klassen A. Abstrakte metoder Er en metode uten innhold (i en abstrakt klasse) ; istedenfor { Fordi det ikke gir mening å lage et innhold ((Noen ganger har vi tomme metoder istedenfor abstrakte)) Må lag en subklasse som tvinges til å gi koden Abstrakte metoder er alltid polymorfe En subklasse til en abstrakt klasse kan selv være abstrakt. 5

6 UML klassehierarki med abstrakt klasse Ansatt abstract 6

7 Arv I Java kan en klasse bare arve egenskapene til én annen klasse (en superklasse). Dette gjør språket sikrere å bruke Hva skal vi gjøre hvis vi ønsker at et objekt skal inneholde mange forskjellige egenskaper fra forskjellige superklasser? På de neste sidene: Begrepshierarkiet i et bibliotek 7

8 Motivasjon for nytt begrep (interface): Analyse av bibliotek Bøker, tidsskrifter, CDer, videoer, mikrofilmet materiale, antikvariske bøker, flerbindsverk, oppslagsverk, upubliserte skrifter, En del felles egenskaper antall eksemplarer, hylleplass, identifikasjonskode (Dokument) for det som kan lånes ut: Er utlånt?, navn på låner,... (TilUtlån) for det som er antikvarisk: Verdi, forskringssum,... (Antikvarisk) Spesielle egenskaper: Bok: Forfatter, tittel, forlag Tidsskriftnummer: Årgang, nummer, utgiver CD: Tittel, artist, komponist, musikkforlag Påde nestesidenebetyr En klasse i et subklassehierarki (og ikke en klassedatastruktur) 8

9 Tvilsomt begrepshierarki Forslag til subklassehierarki Dokument Bok CD Tidskrift UtlånbarBok IkkeLånbarBok UtlånbarCD IkkeLånbarCD Utlånbart Tidsskriftnr IkkeLånbart Tidsskriftnr 9

10 UtlånbartDokument Dokument Omrokkering uten suksess IkkeLånbartDokument BokU CDU TidsskriftnrUtl Bok CD Tidsskriftnr 10

11 interface TilUtlån Samle lik oppførsel: Interface (norsk: grensesnitt) class Dokument class Bok class CD class Tidskriftnr class UtlånbarBok class UtlånbarCD class Utlånbart Tidsskriftnr En klasse kan også tilføres et interface (i tillegg til arveegenskapene i klassehierarkiet) Dvs. en klasse kan spille to roller 11

12 Hva er et grensesnitt (interface)? En samling egenskaper (en rolle) som ikke naturlig hører hjemme i et arve-hierarki En samling egenskaper som mange forskjellige ting av forskjellige typer kan anta For eksempel Kan delta i konkurranse (startnummer, resultat,.. Mennesker, biler, hester kan delta i konk.) Svømmedyktig (mennesker, fugler er svømmed.) Her: Antikvarisk (møbler, bøker,. ) Kan lånes ut (biler, bøker, festklær, ) 12

13 Hva er et grensesnitt (interface)? Et interface likner en abstrakt klasse Alle metodene i en interface er abstrakte og polymorfe En interface inneholder ingen variable eller annen datastruktur (men kan ha konstanter) En klasse som arver egenskapene til et interface må selv putte inn kode i alle de abstrakte metodene (og deklarere passende variable som disse metodene bruker). En klasse kan arve egenskapene til mange grensesnitt (men bare en klasse) Å arve (en samling metoder) = å spille en rolle 13

14 interface TilUtlån Flere grensesnitt Verk Dokument interface Antikvarisk Bok CD Video Tidskriftnr UtlånbarBok AntekvUtlånbrCD IkkeLånbarCD Utlånbart Tidsskriftnr IkkeLånbartTids skriftnr AntikvariskBok Utlånbart, Antekvarisk Tidsskrift En klasse kan tilføres et ubegrenset antall interface-er Dvs. en klasse kan spille et ubegrenset antall roller Antikvarisk tidsskriftnr 14

15 Nytt eksempel Hvis vi ønsker at noen objekter også skal kunne spille rollene (ha egenskapene) Skatt og Miljø : Skatt interface Skatt { double toll( ) ; int momssats() ; toll ( ); momssats( ); interface Miljo { int co2utslipp ( ); boolean svanemerket ( ) ; Miljo co2utslipp( ); svanemerket( ); 15

16 Enkelt eksempel med bil-hierarkiet class Bil { String regnr; class Lastebil extends Bil { double lastevekt; Bil interface Skatt { double toll( ) ; int momssats() ; Skatt Lastebil interface Miljo { int co2utslipp ( ); boolean svanemerket ( ) ; Miljo 16

17 Tre nye klasser som kan spille mange roller Skatt Bil Miljo Lastebil Personbil MiljoBil LastebilMedSkattogMiljo Men metodene må (dessverre) skrives på nytt hver gang de brukes 17

18 Nytt Java-ord: implements (1) rollen (i arv) fra klassehierarkiet class Personbil extends Bil implements Skatt { int antpass; double momsgrunnlag = ; public double toll( ) { return momsgrunnlag * 0.5; public int momssats( ) {return 25; rollen Skatt class Bil { String regnr; Skatt Bil interface Skatt { double toll( ) ; int momssats() ; Personbil 18

19 Nytt Java-ord: implements (2) Rollene i (arv fra) klassehierarkiet class MiljoBil extends Personbil implements Miljo { int utslipp = 200; public int co2utslipp ( ) {return utslipp; public boolean svanemerket () { return false; rollen Miljo class LastebilMedSkattogMiljo extends Lastebil implements Skatt, Miljo { double innkjopspris = ; int utslipp = 400; public double toll( ) { return innkjopspris * 0.1; rollen Skatt public int momssats( ) {return 20; public int co2utslipp ( ) {return utslipp; rollen Miljo public boolean svanemerket () { return false; MiljoBil arver rollen Skatt fra Personbil Den rød-grønne regjeringen vil kanskje gjøre noe med det 19

20 En litt annen definisjon av MiljøBil class MiljoBil extends Personbil implements Miljo { int utslipp = 200; public int co2utslipp ( ) {return utslipp; public boolean svanemerket () { return false; public double toll( ) { return momsgrunnlag * 0.2; public int momssats( ) {return 10; Rollene Skatt i (arv fra) klassehierarkiet ny roll Miljo rollen Skatt forandres her Her arver MiljoBil rollen Skatt fra Personbil, men redefinerer virkningen av toll og momssats 20

21 Et objekt og noen pekere Bil minbil; new LastebilMedSkattogMiljø() Object obj; Lastebil minlast; LastebilMedSkattogMiljø denne; Skatt skatteobjekt; Miljo miljoting; regnr lastevekt toll ( ); momssats( ); Bil Lastebil rollen Skatt Hva kan vi se gjennom de forskjellige pekerene? Det er sant: Vi kan ha pekere av interface-type co2utslipp( ); svanemerket( ); utslipp innkjopspris rollen Miljo egne ting (og egen rolle) 21

22 Legg til metoder for å skrive ut på skjerm: class Bil { String regnr; void skriv(){ System.out.println( Registreringsnummer: " + regnr); class Lastebil extends Bil { double lastevekt; void skriv (){ super.skriv(); System.out.println("Lastevekt: " + lastevekt); 22

23 Skriv i LastebilMedSkattOgMiljo class LastebilMedSkattOgMiljo extends Lastebil implements Skatt, Miljo { double innkjopspris = ; int utslipp = 400; public double toll( ) { return innkjopspris * 0.1; public int momssats( ) {return 20; public void skrivskatt( ) { System.out.println("Innkjøpspris " + innkjopspris); public int co2utslipp ( ) {return utslipp; public boolean svanemerket () { return false; public void skrivmiljo( ) { System.out.println("Utslipp " + utslipp); (Som før) public void skriv( ) { System.out.println( Lastebil med skatt og miljø: "); super.skriv( ); skrivskatt(); skrivmiljo(); (Skatt og Miljo som før) Det er ikke naturlig at Skatt og Miljo skal kreve en skriv -metode 23

24 Bil minbil; Skriv i LastebilMedSkattogMiljo LastebilMedSkattogMiljø-objekt Object obj; Lastebil minlast; LastebilMedSkattogMiljø denne; Skatt skatteobjekt; Miljø miljøting; regnr skriv() lastevekt skriv() toll ( ); momssats( ); co2utslipp( ); svanemerket( ); public void skriv( ) { System.out.println ( Lastebil med skatt og miljø: "); super.skriv( ); skrivskatt(); skrivmiljo(); utslipp innkjopspris skrivmiljo() skrivskatt() skriv() (egne ting og) egen rolle 24

25 Tilbake til biblioteket Klassehierarki, forenklet bibliotek interface TilUtlån Dokument Bok CD BokTilUtlaan BokIkkeUtlaan CDTilUtlaan CDIkkeUtlaan 25

26 Forenklet bibliotek interface TilUtlån Bok Dokument abstract class Dokument { String tittel; abstract class Bok extends Dokument { String forlag; int trykningsår; BokTilUtlaan BokIkkeUtlaan Ordet abstract kan sløyfes før metodenavnet i et interface (det er jo helt opplagt) interface TilUtlaan { abstract void låne(string låner) ; abstract void levere() ; abstract boolean utlånt() ; static final String ingen = "ingen"; // Slutt interface TilUtlaan 26

27 BokTilUtlaan interface TilUtlaan BokTilUtlaan Bok Dokument BokIkkeUtlaan Bare disse to klassene kan vi lage objekter av class BokTilUtlaan extends Bok implements TilUtlaan { String låner = ingen; public void låne (String l) { låner = l; public void levere() { låner = ingen; public boolean utlånt() { return låner!= ingen; // Slutt class BokTilUtlaan BokTilUtlaan har både egenskapene til Bok og egenskapene til TilUtlaan. Objekter av denne klassen kan spille begge rollene! class BokIkkeUtlaan extends Bok { 27

28 Se på implementasjonen igjen: interface TilUtlaan { abstract void låne(string låner) ; abstract void levere() ; abstract boolean utlånt() ; static final String ingen = ingen"; Metodene i et interface er veldig polymorfe class BokTilUtlaan extends Bok implements TilUtlaan { String låner = ingen; public void låne (String l) { låner = l; public void levere() { låner = ingen; public boolean utlånt() { return låner!= ingen; Dette er de tre metodene som vi må love å implementere 28

29 interface TilUtlaan { abstract void låne(string låner) ; abstract void levere() ; abstract boolean utlånt() ; static final String ingen = ingen"; interface TilUtlån Dokument CD abstract class CD extends Dokument { String komponist, artist, musikkforlag; CDTilUtlaan CDIkkeUtlaan class CDTilUtlaan extends CD implements TilUtlaan { String låner = ingen; public void låne(string l) { låner = l; public void levere() { låner = ingen; public boolean utlånt() { return låner!= ingen; // Slutt class CDTilUtlaan Her er de tre metodene igjen class CDIkkeUtlaan extends CD { 29

30 Mer om grensesnitt (interface) Navnet på et Interface (grensesnitt) kan brukes som klassenavn når vi lager pekere (så vi på side 21) Vitsen med et grensesnitt er å spesifisere hva som skal gjøres (ikke hvordan) Det kan godt være flere implementasjoner av et grensesnitt (flere klasser kan implementere det). Vi vet: En klasse kan implementerer (flere) grensesnitt samtidig som klassen også er subklasse av (bare) en annen klasse. En implementasjon (av et grensesnitt) skal kunne endres uten at resten av programmet behøver å endres. Men selv om et grensesnitt skal spesifisere hva (og ikke hvordan), spesifiseres bare syntaksen (signaturen) og ikke hva som gjøres (semantikken) 30

31 Anta at vi skal lage et Dokumentregister i et bibliotek 4 BI JavaGently Addison-Wesley 1998 CU Favoritter Grieg Kyrkjebø Musikkforlaget ingen BU JustJava Sun 1998 Kari CI Favourites Wonder,Stevie Dion,Celine BMG Filformat: Først antall poster på filen For hver post: - dokumenttypen (BU, BI, CU eller CI) - tittel - Hvis Bok: forlag år - Hvis BokTilUtlån: Også låner - Hvis CD: komponist / artist / musikkforlag - Hvis CDTilUtlån: Også låner 31

32 Dokumentregister Innlesning DokumentRegister - objekt innfil antdok alledokumenter void lesfrafil() Dokument d = null; String dokumenttype; In innfil = new In( dokumentfil.txt ); antdok = innfil.inint( ); for (int i=1; i<=antdok; i++) { dokumenttype = innfil.inword( ); if (dokumenttype.equals("bu")) d = new BokTilUtlaan(); else if (dokumenttype.equals("bi")) d = new BokIkkeUtlaan(); else if (dokumenttype.equals("cu")) d = new CDTilUtlaan(); else if (dokumenttype.equals("ci")) d = new CDIkkeUtlaan(); d.lesfra(innfil); alledokumenter.put(d.tittel,d); // Slutt for Dokument Bok TilUtlaan BokTilUtlaan Dokument CD TilUtlaan CDTilUtlaan 32

33 utfil void skrivtilfil() Dokumentregister Utskrift DokumentRegister - objekt alledokumenter Dokument Bok TilUtlaan Dokument d = null; String dokumenttype; Out utfil = new Out( dokumentfil.txt ); utfil.outln(alledokumenter.size( )); for (Dokument d: alledokumenter.values()) { d.skrivtilfil(fil); d BokTilUtlaan Dokument CD TilUtlaan CDTilUtlaan HashMap<String,Dokument> alledokumenter; alledokumenter = new HashMap<String,Dokumenter> ( ); alledokumenter.values() 33

34 Metoden låne i DokumentRegister void låne() void låne() throws IOException { boolean utlånt() Dokument d = null; String h; void levere() System.out.print( Tittel: "); h = in.readstring( ); d = alledokumenter.get(h); if (d==null) System.out.println("Beklager, denne har vi ikke"); else if (d instanceof TilUtlaan) { TilUtlaan t = (TilUtlaan) d; Navn: t if (t.utlånt()) { System.out.println("Beklager, utlånt"); else { Type: TilUtlån System.out.print( Låners navn: "); String n = in.readstring( ); t.låne(n); // slutt kan lånes ut // Slutt if (d instanceof TilUtlaan) else System.out.println("Beklager, denne låner vi ikke ut"); // Slutt låne 34

35 Klasse- og interface-tilhørighet (igjen) Test med operatoren instanceof if (d instanceof TilUtlaan) p instanceof C Gir TRUE dersom p peker på et objekt av klassen C eller en subklasse av C, eller dersom p peker på en klasse som implementerer interfacet C d Bok Dokument d = alledokumenter.get(h); TilUtlaan t = (TilUtlaan) d; t ser bare TilUtlån-egenskapene! Endring med casting OK, dersom d spiller rollen TilUtlaan, dvs. er et objekt av en av klassene BokTilUtlaan eller CDTilUtlaan Object Dokument TilUtlaan BokTilUtlaan 35

36 leveretilbake i DokumentRegister void leveretilbake() { Dokument d = null; String h; System.out.print( Tittel: "); h = in.readstring( ); d = alledokumenter.get(h); if (d==null) System.out.println("Beklager, feil tittel"); else if (d instanceof TilUtlaan) { TilUtlaan t = (TilUtlaan) d; if (t.utlånt()) { t.levere(); System.out.println("Takk"); else System.out.println("Beklager, denne er ikke utlånt"); // Slutt if (d instanceof TilUtlaan) void låne() boolean utlånt() void levere() Navn: t Type: TilUtlån 36

37 Indre klasser Klasser i Java kan defineres inni hverandre. Objekter i den indre klassen kan referere til metoder og variable i sitt omsluttende objekt! + Lettvint + Skjuler implementasjon Flere feilmuligheter Du må altså opprette et objekt av den ytre klassen før du får lov til å lage objekter av den indre klassen (hvis ikke den indre klassen er static ) class Register { HashMap<String,Person> liste;... class Person { String navn;... void registrer() {... liste.put(navn,this);... // Slutt class Person... // Slutt class Register Ikke viktig i inf

38 Et utvalg fra Javas klassehierarki class Object { // Alle objekters mor boolean equals(object obj)... Object clone()... public final class String extends Object { public final class Math extends Object { public class Date extends Object { public abstract class Calendar extends Object { Alle klasser er subklasser av class Object. Hvis klassedeklarasjonen ikke har med extends, tolker kompilatoren det som extends Object public interface Map<K,V> {... public interface Collection<E> {... public interface Iterator<E> {... public abstract class AbstractMap<K,V> extends Object implements Map<K,V> {... public class HashMap <K,V> extends AbstractMap <K,V> implements Map <K,V>, Cloneable, Serializable { V get(object key) { void put (K key, V value) {... K: Key, E: Element, V: Value 38

39 class HashMap<K,V> class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { // Hemmelig datastruktur public void put(k key, V value) {... public V remove(object key) {... public V get(object key) {... Java har etter hvert mange klasser som kan brukes til å ta vare på objekter: Vector, ArrayList, Collection, HashMap HashSet, LinkedList, Stack, TreeSet, TreeMap,...) public boolean containskey(object key) {... public boolean containsvalue(object value) {... public int size( ) {... public Collection<V> values( ) {... // slutt class HashMap 39

40 class HashMap class HashMap extends AbstractMap implements Map, Cloneable, Serializable { // Hemmelig datastruktur public void put(object key, Object value) {... public Object remove(object key) {... public Object get(object key) {... public boolean containskey(object key) {... public boolean containsvalue(object value) {... public int size( ) {... public Collection values( ) {... Uten typer, bare med Object, blir det slik // slutt class HashMap 40

41 public interface Collection{ public int size();... HashMap og grensesnittet Collection class HashMap<K,V>... { <Hemmelig datastruktur> class Ukjent<V> implements Collection<V> {... public void put(k nokkel, V verdi ){ public Collection<V> values( ) { Ukjent<V> u = new Ukjent<V> ( ) ;... return u;... HashMap har altså sine egne implementasjoner av Collection som er hemmelig for oss utenfor, men siden alle metodene er kjent kan vi kalle på disse (på neste side) 41

42 Implementasjon av Collection void visalledokumenter() alledokumenter For (Dokument d: alledokumenter.values()) { d.vispaaskjerm(); // slutt for d Collection Ukjent-objekt Collection values() Class Ukjent Dokument-objekt 42

43 Grensesnitt (interface) enda en gang Et grensesnitt (interface) har bare metodenavn med parametre, men ikke kode (husk ;) konstanter (static final - eks static final int ANTALL = 4;) Bruker interface i steden for class før navnet Gir en type / rolle som andre må implementere class ABC implements ButikkSystem {...her gis kode for alle metodene i ButikkSystem... Meget nyttig, brukes mye ved distribuerte systemer og generelle programbiblioteker som Javas eget Ulempe: Koden/implementasjonen må gjøres mange ganger Mer generelt kjent under navnet ADT =Abstrakt DataType, Vi definerer hva en ny datatype skal gjøre, ikke hvordan dette gjøres. Det kan være mange mulige implementasjoner (=måter å skrive kode på) som lager en slik datatype. Hva som er beste implementasjon må avgjøres etter hvilken bruk vi har. 43

44 Legge i og ta ut av bokser Objektifisering og de-objektifisering For alle de primitive typene finnes det en tilsvarende klasse: Boolean Short Integer Long Character Double Float Byte boolean short int long char double float byte I tillegg til at vi kan lage objekter av klassene og legge primitive verdier inn i disse objektene, inneholder klassene (static) metoder som kan hjelpe til med å manipulere verdier av de forskjellige typene. For eksempel (linje er en String): double tall = Double.parseDouble(linje); Type: Double Navn: pipek Se i pakken java.lang Double klassedatastruktur Double valueof ( ) double parsedouble ( ) double doublevalue( ) Double klassedobjekt Type: double Navn: pitall 44

45 put og get i Map (Java api) Dette trenger vi i programmene på de neste sidene V put(k key, V value) Associates the specified value with the specified key in this map. If the map previously contained a mapping for the key, the old value is replaced Returns: the previous value associated with key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with key.) V get(object key) Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key Slik skal programmene virke: 45

46 Eksempel: Uten Automatisk objektifisering Lett modifisert fra eksempel på java.sun.com import java.util.*; // Prints a frequency table of the words on the command line public class Boks { public static void main(string [ ] args) { Map<String, Integer> m = new HashMap<String, Integer>(); // trenger bare Map-egenskapene til HashMap-en // m er tom til å begynne med! Integer objekt Integer(int i) 2 int intvalue( ) Type int 2 for (String word : args) { // for-each-løkken går gjennom hele tabellen Integer freq = m.get(word); if (freq == null) // da er ikke ordet sett før m.put(word, new Integer(1) ); // fekvensen er 1 første gang else m.put (word, new Integer (freq.intvalue() + 1) ); // øker frekv. med 1 freq Type Integer System.out.println(m); String tostring (int i) String tobinarystring (int i) Integer klassedatastruktur

47 Eksempel: Med Automatisk objektifisering Lett modifisert fra eksempel på java.sun.com import java.util.*; // Prints a frequency table of the words on the command line public class AutoBoks { public static void main(string [ ] args) { Map<String, Integer> m = new HashMap<String, Integer>(); // trenger bare Map-egenskapene til HashMap-en // m er tom til å begynne med! for (String word : args) { // for-each-løkken går gjennom hele tabellen Integer freq = m.get(word); if (freq == null) // da er ikke ordet sett før m.put(word, 1 ); // fekvensen er 1 første gang else m.put (word, freq + 1) ); // øker frekv. med 1 Type int 2 Integer objekt Integer(int i) 2 int intvalue( ) freq Type Integer System.out.println(m); String tostring (int i) String tobinarystring (int i) Integer klassedatastruktur

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

Abstrakte metoder og klasser. Abstrakte metoder og klasser. Uke 9 INF1010, 27. februar 2007, Abstrakte klasser og grensesnitt (interface) Abstrakte metoder og klasser Uke 9 INF1010, 27. februar 2007, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo n Abstrakte metoder n abstract før deklarasjonen

Detaljer

Abstrakte metoder og klasser. Abstrakte metoder og klasser

Abstrakte metoder og klasser. Abstrakte metoder og klasser Uke 6 INF1010, 5. februar 2008, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen av

Detaljer

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

Institutt for informatikk. INF1010, 18. februar 2010, Inst for Informatikk INF1010, 18. februar 2010, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen av en

Detaljer

Abstrakte metoder og klasser

Abstrakte metoder og klasser Abstrakte metoder og klasser INF1010, 18. februar 2010, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder abstract før deklarasjonen av en

Detaljer

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

INF1010, 10. februar 2009, Konstruktører. Inst for Informatikk INF1010, 10. februar 2009, Abstrakte klasser og grensesnitt (interface) Konstruktører Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen

Detaljer

Abstrakte metoder og klasser

Abstrakte metoder og klasser Abstrakte metoder og klasser INF1010, 10. februar 2009, Abstrakte klasser og grensesnitt (interface) Konstruktører Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder abstract før deklarasjonen

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, 8. mars Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak.

INF1010, 8. mars Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak. INF1010, 8. mars 2012 Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak. Stein Gjessing Inst for Informatikk Universitetet i Oslo Abstrakte metoder og klasser

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

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

INF april 2017

INF april 2017 INF1010-20. april 2017 Programmeringsmønstre Patterns Eksempel på bruk av interface Stein Gjessing Universitetet i Oslo 1 1 Problem Spesifikasjon Program 2 Programvare-arkitektur Hvordan programmet er

Detaljer

INF april 2016

INF april 2016 INF1010-21. april 2016 Programmeringsmønstre Patterns Oppgave med interface Vranglås blant tråder Prosesskommunikasjon Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 Problem Spesifikasjon

Detaljer

INF1010, 24. februar 2011. Stein Gjessing Inst for Informatikk Universitetet i Oslo

INF1010, 24. februar 2011. Stein Gjessing Inst for Informatikk Universitetet i Oslo INF1010, 24. februar 2011 Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Universitetet i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen

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

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

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

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

INF våren 2015

INF våren 2015 INF1010 - våren 2015 Programmeringsmønstre Patterns Invarianter Tilstandspåstander Repetisjon av interface Prosesskommunikasjon Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 Programvare-

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

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

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

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

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

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

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

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

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

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

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4» < T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar

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

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

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

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

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

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

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

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

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på

Detaljer

INF1000 - Løsning på seminaropppgaver til uke 8

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

Detaljer

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

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

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

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

Del 3: Evaluere uttrykk

Del 3: Evaluere uttrykk Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret

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

2 Om statiske variable/konstanter og statiske metoder.

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

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

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

INF1010. Grensesnittet Comparable<T>

INF1010. Grensesnittet Comparable<T> INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd

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

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20 Java på 20 enkle ark spesielt for de som kan Simula (og gjerne litt C) Ark 1 av 20 Forelesning 28.9.1998 Et minimalt eksempel Filen Hallo.java ser slik ut: class Hallo { public static void main(string

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

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

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt.

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt. Polymorfi og arv, del 3 Repetisjon Eksempel Modifikatoren final Interface som grensesnitt, ge klassene som implementasjon LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php

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

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

JAVA Oppsummering for IS-102. Even Åby Larsen

JAVA Oppsummering for IS-102. Even Åby Larsen JAVA Oppsummering for IS-102 Even Åby Larsen even.larsen@hia.no 26. april 2010 Innhold 1 Innledning 3 2 Hva er et Java program 4 2.1 Kjøring av java programmer................. 4 3 Grammatikk for Java

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

INF1010 oversikt med

INF1010 oversikt med INF1010 oversikt med Subklasser mm Unntaksbehandling GUI Tråder 12. mai 2009 Stein Gjessing Model View Control main navn: bnk type: BankKontroll bnk = new BankKontroll(); bnk.ordreløkke(); BankKontrollklassedatastruktur

Detaljer

Repetisjon. INF1000 - gruppe 13

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

Detaljer

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

"Nelsons kaffebutikk"

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

Detaljer

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

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

TOD063 Datastrukturer og algoritmer

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

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Bruk av grensesnitt og implementasjoner i Collection-klasser Java-prog, kap. 14-16 i Big Java Og side 990-997 i Appendix D Collection-rammeverket og iterasjon

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

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

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser

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

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

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

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

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

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

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

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. Stein Michael Storleer (michael) Lenkelister

INF1010. Stein Michael Storleer (michael) Lenkelister INF1010 Stein Michael Storleer (michael) Lenkelister Lenke Datastrukturen lenkeliste class { = null ; foran foran = new () ; class { = null ; foran foran = new () ; foran. = new () ; class { = null ; foran

Detaljer

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

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

IN våren 2019 Onsdag 16. januar

IN våren 2019 Onsdag 16. januar IN1010 - våren 2019 Onsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

IN våren 2018 Tirsdag 16. januar

IN våren 2018 Tirsdag 16. januar IN1010 - våren 2018 Tirsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML) Innhold Unified Modelling Language UML INF1000 Høst 2015 Uke 8: Mer objektorientert programmering Siri Moe Jensen En ny type for-løkke Organisering av mengder av objekter HashMap Valg av representasjon

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:

Detaljer

INF våren 2017

INF våren 2017 INF1010 - våren 2017 Om Java Objekter og klasser Både for deg som kan og for deg som ikke kan Java Stein Gjessing Universitetet i Oslo Ny versjon etter forlesningen der tre meningsløse private modifikatorer

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

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

INF2100. Oppgaver uke 40 og

INF2100. Oppgaver uke 40 og INF2100 Oppgaver uke 40 og 41 2014 For å få trening i å programmere en parser, skal vi aller først gjøre det for et veldig enkelt programmeringsspråk: E. Dette språket består av uttrykk med de fire vanligste

Detaljer

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

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

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

INF2100. Oppgaver 9. oktober 2012 C 100 X 10 INF2100 Oppgaver 9. oktober 2012 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side. Tallkonstanter

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

INF2100. Oppgaver 23. og 24. september 2010

INF2100. Oppgaver 23. og 24. september 2010 INF2100 Oppgaver 23. og 24. september 2010 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med + og ; grammatikken ser du i figur 1 på neste side. Tallkonstanter består av bare ett

Detaljer

INF1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort

Detaljer