Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,

Lignende præsentationer


Præsentationer af emnet: "Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,"— Præsentationens transcript:

1 Klassehierarkier Specialisering vha. subklasser

2 dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller, Skuespillerelev,... –Udlånsemne, CD, Video, DVD,... Specialisering/generalisering –Generalisere: sætte uden for parantes –Definere fælles egenskaber i superklasser (metoder og attributter) –Implementere opførsel på generelt niveau –Specialisere opførsel i subklasser –Tilføje egenskaber i subklasser (metoder og attributter)

3 dIntProg, E05Klassehierarkier.3 Subtyperelation for objekttyper Aktoer SkuespillerKoreograf klap (heltal n) drej (heltal n) skrivAntalTricks() ElevGnavpotKarakter… Aktoer Koreograf ≤ Skuespiller ≤ Aktoer ≤ Object Elev ≤ Karakter... ≤ Skuespiller Gnavpot ≤

4 dIntProg, E05Klassehierarkier.4 Specialisering i UML Item udlånTil(l: låner) hjemlån() erHjemme() Book forfatter() forlag() ISBN() Video producer() format() spilletid() Generelt begreb Specielle begreber

5 dIntProg, E05Klassehierarkier.5 Specialisering i Java class Item { void udlånTil(Låner l) { // kode for udlån } void hjemlån() { // kode for hjemlån } boolean erHjemme() { // kode for erHjemme }... } class Book extends Item { String forfatter() {... } String forlag() {... } String ISBN() {... }... } class Video extends Item { String producer() {... } String format() {... } int spilletid() {... }... }

6 dIntProg, E05Klassehierarkier.6 Kodegenbrug: Sætte uden for parantes A*B + A*C = A * (B+C) I Java bliver dette til Fordelen er at vi kun skal skrive A én gang A og B A og C A BC

7 dIntProg, E05Klassehierarkier.7 Polymorfi Den væsentligste fordel er dog at vi får mulighed for at operere uniformt på alle objekter af en bestemt kategori: A BC Klient DE *

8 dIntProg, E05Klassehierarkier.8 Klient class Klient { private List items; public Klient() { items = new ArrayList (); } public addItem(A a) { items.add(a); } public void doSomething() { for ( A a : items ) { // behandl alle items som om de er // A-objekter uanset om de faktisk // er B-, C-, D- eller E-objekter }

9 dIntProg, E05Klassehierarkier.9 Konstruktører class A { private... public A() { // initialisering af A-del af objekt } class B extends A { private...; public B() { super(); // initialisering af B-del af objekt } Kaldet af super skal stå først; hvis der ikke er et kald af su- per, genereres der automatisk et!

10 dIntProg, E05Klassehierarkier.10 Objektlayout class A { private int a1; private int a2;... } class B extends A { private int b1; private int b2; } A a = new A(); B b = new B(); a b :A 7 9 a1: a2: :B 7 9 a1: a2: 11 13 b1: b2: A B A

11 dIntProg, E05Klassehierarkier.11 Associering vs. specialisering AB :A:B Associering: relation på klasser og objekter A B :B A B Specialisering: relation på klasser, struktur af objekt

12 dIntProg, E05Klassehierarkier.12 Specialisering af opførsel class A { private...; public String toString() { return...; } class B extends A { private...; public String toString() { return... + super.toString() +...; }

13 dIntProg, E05Klassehierarkier.13 Nye egenskaber i subklasse class A { private...; public void pip() {...; } } class B extends A { private...; public void pip() {...; } public void pap() {...; } } A a = new A(); B b = new B(); a.pip(); // Lovligt ? a.pap(); // Lovligt ? b.pip(); // Lovligt ? b.pap(); // Lovligt ? a.pip(); // hvilken pip? b.pip(); // hvilken pip? a = b; a.pip(); // hvilken pip?

14 dIntProg, E05Klassehierarkier.14 Sammenfatning Specialisering –Begrænsninger på arvede egenskaber (redefinering af metoder) –Tilføjelse af nye egenskaber –Understøttes i Java af extend-relationen på klasser og interfaces –Er en relation på klasser (super- og subklasse) –Definerer struktur af objekt (super-del og sub-del)


Download ppt "Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,"

Lignende præsentationer


Annoncer fra Google