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

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
Selve objektet versus referencen til objektet Nedarvning
Objektorienteret programmering
09 – Arv og polymorfi i java
Arv Idéen i arv et at kunne genbruge gennem generalisering
Forelæsning 3.1 Collections Javas for-each løkke
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
Objekter og klasser Rasmus D. Lehrmann DM
Repetition: Introduktion til OOP med C# og .NET
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Forelæsning 2.2 Tilstand og opførsel (repetition)
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Begrebsmodellering, UML og Java
Variabler, klassevariabler, identitet og lighed, collections
Introduktion til programmering Repetition - ArrayList.
DAIMIIntroducerende Objektorienteret Programmering1 Polymorfi og nedarvning Motivation for arv og “mange former”
Objektorienteret programmering – begrebsmodellering
 1999, Henrik B. ChristensenIntroducerende objektorienteret programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
DAIMIIntroducerende Objektorienteret Programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Objektorienteret programmering – begrebsmodellering
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Objecter Introduktion Webintegrator HF1 PHP Object orienteret.
Forelæsning Uge 6 – Mandag
Forelæsning Uge 3 – Mandag
Forelæsning Uge 6 – Mandag
Forelæsning Uge 3 – Mandag
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Klassehierarkier Specialisering vha. subklasser

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)

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 ≤

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

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() {... }... }

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

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 *

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 }

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!

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: b1: b2: A B A

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

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() +...; }

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?

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)