Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
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> ()
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.