Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre.

Liknende presentasjoner


Presentasjon om: "INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre."— Utskrift av presentasjonen:

1 INF Objektorientert programmering Datastrukturer i Java Klasser med parametre

2 INF1010 våren 2015 Stein Gjessing (steing) Stein Michael Storleer (michael) 36 hjelpelærere – Andreas Færøvig Olsen (andrefol) – Henrik Hillestad Løvold (henrihlo) – 12 gruppelærere – 22 obligrettere

3 Undervisningstilbud 2 timer forelesninger pr. uke 2 timer plenumsøvelser pr. uke 2 timer seminarundervisning pr. uke Labundervisning en-til-en, tilbakemelding og godkjenning av obliger ca. 8 obliger 2 poeng pr. uke Første oblig frist onsdag 4. februar kl Andre oblig frist 11. februar kl Vi kan opprette labgrupper etter behov

4 Variabler primitive typer arrayer pekervariable Alle variabler har 1.en type 2.et navn 3.et innhold

5 Metoder Må enten ha en returtype returtypen kan være alle typer som en variabel kan ha, også array. eller være void har 0, 1 eller flere parametre

6 Metoder og variable er byggesteinene våre i tillegg til klasser og konstruktører. Vi skiller mellom klassevariabler og klassemetoder objektvariabler og objektmetoder

7 Et javaprogram som kjøres oppretter objekter og endrer på innholdet i klasse- og objektvariabler ved å utføre konstruktører og metoder. Variabler endrer innhold med tilordninger.

8 class Hund { private String navn ; private int vekt = 5000; private Hund mor = null; Hund ( String n ){ navn = n; } Hund ( String n, int v ) { navn = n; vekt = v; } public void settVekt ( int v ) { vekt = v; }

9 class Eks01 { public static void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); Hund pluto = new Hund("Pluto", 6750); }

10 class Heltall { int tall; Heltall(int t) {tall = t;} } class Eks02 { public static void main ( String[] a ) { int a=0, b=7; Heltall refa, refb; refa = new Heltall(0); refb = new Heltall(7); a = b; refa = refb; b = 8; refb.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", refb.tall=" + refb.tall); }

11 public static void main (String[] argumenter) { int a=0, b=7; Heltall refa, refb; refa = new Heltall(0); refb = new Heltall(7); a = b; refa = refb; b = 8; refb.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", refb.tall=" + refb.tall); }

12 public static void main (String[] argumenter) { int a=0, b=7; Heltall refa, refb; refa = new Heltall(0); refb = new Heltall(7); a = b; refa = refb; b = 8; refb.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", refb.tall=" + refb.tall); }

13 Tilordninger primitive variabler = Hva gjør javamaskinen når programmet utføres? 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

14 Tilordninger primitive variabler = int tall = 2 * 5 + 3; tall = 47 % 7; double rotenAv2 = java.lang.Math.sqrt(2.0); 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

15 Tilordninger pekervariabler = Hund lassie = new Hund(“Lassie”); Hund minHund = lassie; minHund = finnHundMedNavn(“Lassie”); minHund = null; 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

16 Tilbake til hundeeksemplet class Hund { …… } class Eks01 { static int antallHunder = 0; public static void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); ++antallHunder; Hund pluto = new Hund("Pluto", 6750); ++antallHunder; }

17 class Eks01 { static int antallHunder = 0; public static void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); ++antallHunder; Hund pluto = new Hund("Pluto", 6750); ++antallHunder; } Klassedatastruktur:

18 class Hundebur { private Hund hundIBur = null; public void settInnHund( Hund h ) { if (hundIBur == null) hundIBur = h; else System.out.println("Hundeburet er fullt!"); } public Hund taUtHund() { Hund somSlipperUt = null; if (hundIBur == null) System.out.println("Hundeburet er tomt!"); else { somSlipperUt = hundIBur; hundIBur = null; } return somSlipperUt; }

19 class Hundebur { private Hund hundIBur = null; public void settInnHund( Hund h ) { } public Hund taUtHund() { return somSlipperUt; }

20 class Eks01 { static int antallHunder = 0; public static void main (String[] argumenter) { Hund pluto = new Hund("Pluto", 6750); ++antallHunder; Hundebur hundeburet = new Hundebur(); hundeburet.settInnHund(new Hund("Cara")); hundeburet.settInnHund(pluto); Hundebur burNr2 = new Hundebur(); burNr2.settInnHund(pluto); }

21 class Katt { private String navn ; private int vekt = 3750; private Katt mor = null; Katt ( String n, Katt mor ){ navn = n; this.mor = mor; } Katt ( String n, int v ) { navn = n; vekt = v; } public void settVekt ( int v ) { vekt = v; }

22 Kan katter settes i hundebur? Utvider main-metoden: ….. Hundebur burNr2 = new Hundebur(); burNr2.settInnHund(pluto); Katt pus = new Katt("Pus", 5600 ); Katt tom = new Katt("Tom", pus ); burNr2.settInnHund(tom); Resultat fra kompilering: Eks04.java:75: settInnHund(Hund) in Hundebur cannot be applied to (Katt) burNr2.settInnHund(tom); ^

23 Kan vi lage bur som både hunder og katter kan bo i ? class Bur { private ???? dyrIBur = null; public void settInn( ???? h ) { if (dyrIBur == null) dyrIBur = h; else System.out.println("Buret er fullt!"); } public ???? taUt() { ???? somSlipperUt = null; if (dyrIBur == null) System.out.println("Buret er tomt!"); else { somSlipperUt = dyrIBur; dyrIBur = null; } return somSlipperUt; }

24 class Bur { private Dyr dyrIBur = null; public void settInn( Dyr h ) { if (dyrIBur == null) dyrIBur = h; else System.out.println("Buret er fullt!"); } public Dyr taUt() { Dyr somSlipperUt = null; if (dyrIBur == null) System.out.println("Buret er tomt!"); else { somSlipperUt = dyrIBur; dyrIBur = null; } return somSlipperUt; }

25 class Bur { private T dyrIBur = null; public void settInn( T h ) { if (dyrIBur == null) dyrIBur = h; else System.out.println("Buret er fullt!"); } public T taUt() { T somSlipperUt = null; if (dyrIBur == null) System.out.println("Buret er tomt!"); else { somSlipperUt = dyrIBur; dyrIBur = null; } return somSlipperUt; }

26 public static void main ( String[] argumenter) { Bur hundeburet = new Bur (); hundeburet.settInn( new Hund("Cara") ); Bur katteburet = new Bur (); Katt pus = new Katt( "Pus", 5600 ); Katt tom = new Katt( "Tom", pus ); katteburet.settInn(tom); Hund h = hundeburet.taUt(); }

27 I dette buret kan vi sette inn objekter av alle klasser: Bur garasje = new Bur (); Bur hybel= new Bur (); Ja, vi kan også lage et bur med et kattebur i: Bur > bur = new Bur >();

28 Men har vi ikke sett dette før ? ArrayList katteliste = new ArrayList (); public class ArrayList { …. Predefinert klasse som vi har brukt …}

29 HashMap hunderegister = new HashMap ()


Laste ned ppt "INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre."

Liknende presentasjoner


Annonser fra Google