Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

INF Objektorientert programmering

Liknende presentasjoner


Presentasjon om: "INF Objektorientert programmering"— Utskrift av presentasjonen:

1 INF1010 - 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
en type et navn et innhold

5 Metoder Må enten ha en returtype eller være void
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 ) { vekt = v; public void settVekt ( int 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
<venstreside> = <høyreside> 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
<venstreside> = <høyreside> int tall = * 5 + 3; tall = % 7; double rotenAv = 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
<venstreside> = <høyreside> 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); }

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); } 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 ) { vekt = v; public void settVekt ( int 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) ^

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<Dyr> { 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<T> { 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<Hund> hundeburet = new Bur<Hund>(); hundeburet.settInn( new Hund("Cara") ); Bur<Katt> katteburet = new Bur<Katt>(); 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<Bil> garasje = new Bur<Bil>(); Bur<Person> hybel= new Bur<Person>(); Ja, vi kan også lage et bur med et kattebur i: Bur<Bur<Katt>> bur = new Bur<Bur<Katt>>();

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

29 HashMap<String, Hund> hunderegister = new HashMap<String, Hund> ()


Laste ned ppt "INF Objektorientert programmering"

Liknende presentasjoner


Annonser fra Google