Top Banner
OOSE 2 Vererbung und Polymorphie mit BlueJ & CRCKartenmethode (Hörsaalübung) SS 2015 Birgit Demuth SS 2015 Softwaretechnologie / OOSE 2
28

OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Nov 04, 2018

Download

Documents

dinhbao
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

OOSE 2Vererbung und Polymorphie mit BlueJ

& CRC‐Kartenmethode(Hörsaalübung)

SS 2015Birgit Demuth

SS 2015 Softwaretechnologie / OOSE 2

Page 2: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

BlueJ: Vererbung (1)Erweiterung von HelloLibrary (U02) 

SS 2015 Softwaretechnologie / OOSE 2

Page 3: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Using inheritance(Wiederholung)

• define one superclass : Medium• define subclasses for Book and DVD• the superclass defines common attributes• the subclasses inherit the superclass attributes

• the subclasses add own attributes

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

Page 4: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Inheritance in Java

public class Medium{

...}

public class Book extends Medium{

...}

public class DVD extends Medium {

...}

change here

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

Page 5: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Access levels

Page 6: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

Subtyping and assignment

Medium m1 = new Medium(…);Medium m2 = new Book(…);Medium m3 = new DVD(…);

subclass objects may be assigned to superclass variables

Page 7: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Static and dynamic type

Book b1 = new Book(…);What is the type of b1?

Medium m1 = new Book(…);What is the type of m1?

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

• The declared type of a variable is its static type.• The type of the object a variable refers to is its dynamic type.

Page 8: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

The problem

• The toString() method in Medium only prints the common fields (title).

• Inheritance is a one‐way street:– A subclass inherits the superclass fields.– The superclass knows nothing about its subclass’s fields.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

Page 9: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

BlueJ: Vererbung (2) ‐ DemoErweiterung von HelloLibrary (U02) um Vererbung

SS 2015 Softwaretechnologie / OOSE 2

Ersetzung (Substitution)der Methode toString()in Book und DVD

Page 10: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Overriding: the solution

toString()method in both super- and subclasses.

Satisfies both static and

dynamic type checking.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

Page 11: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Overriding

• Superclass and subclass define methods with the same signature.

• Each has access to the fields of its class.• Superclass satisfies static type check.• Subclass method is called at runtime – it overrides the superclass version.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

Page 12: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Method lookup

• The variable is accessed.• The object stored in the variable is found.• The class of the object is found.• The class is searched for a method match.• If no match is found, the superclass is searched.• This is repeated until a match is found, or the class hierarchy is exhausted.

• Overriding methods take precedence.

Page 13: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Super call in methods

• Overridden methods are hidden ...• ... but we often still want to be able to call them.

• An overridden method can be called from the method that overrides it.– super.method(...)

– Compare with the use of super in constructors.

Page 14: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Calling an overridden method

public class DVD{

...public void toString(){

return super.toString() +" mit " + laenge + " min Spielzeit";

}}

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

Page 15: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Polymorphism (Polymorphie)

• We have been discussing polymorphic method dispatch (dynamischer Aufruf).

• A polymorphic variable can store objects of varying types.

• Method calls are polymorphic.– The actual method called depends on the dynamic object type.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (updated by Birgit Demuth)

Page 16: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

BlueJ: Vererbung (3) ‐ DemoErweiterung von HelloLibrary (U02) 

SS 2015 Softwaretechnologie / OOSE 2

Überschreiben (Overriding)der Methode toString()in Book und DVD

Page 17: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Lessons learned

• Inheritance allows the definition of classes as extensions of other classes.

• Inheritance – avoids code duplication– allows code reuse– simplifies the code– simplifies maintenance and extending

• Variables can hold subtype objects.• Subtypes can be used wherever supertype objects are expected (substitution).

Page 18: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Lessons learned

• The declared type of a variable is its static type.– Compilers check static types.

• The type of an object is its dynamic type.– Dynamic types are used at runtime.

• Methods may be overridden in a subclass.• Method lookup starts with the dynamic type.• Protected access supports inheritance.

Page 19: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

CRC Kartenmethode

• siehe Foliensatz von Prof. Aßmann12‐st‐crc‐analysis.pdf

SS 2015 Softwaretechnologie / OOSE 2

Page 20: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Beispiel: Auktionen (1)

• Bei der bekannten Englischen Auktion (Auction) werden, von einem festgesetzten Einstandspreis von einem Posten  (minPrice) beginnend aufsteigend Gebote abgegeben, bis kein neues Gebot mehr eintrifft. Der letzte Bieter erhält den Zuschlag.

• Die Entwickler eines Auktionssystems beginnen mit der CRC‐Karten‐Analyse. Zunächst haben sie vier Klassen (Karten) durch Textanalyse identifiziert:– Auction für die einzelnen Auktionen. Jede Auktion kennt eine Liste ihrer zu 

versteigernden Posten (allItems) und eine Liste aller Bieter (bidders).– Item für die Posten, die für eine Versteigerung vorgesehen sind. Ein Item hat 

eine Beschreibung (description) und bekommt eine Nummer (number) sowie einen Einstandspreis (minPrice) zugewiesen. Jeder Posten kennt alle auf sich abgegebenen Gebote (allBids). Posten existieren nur für eine Auktion und werden wieder gelöscht, wenn die Auktion geschlossen wird. 

– Bid für die Gebote. Ein Gebot wird beschrieben durch einen Preis (price) und wird von einer Person (bidder) abgegeben. 

– Person für alle Personen, die als Bieter eines Postens in der Auktion auftreten. Von jeder Person wird der Name (name) gespeichert. 

Legende: Klasse Attribut

SS 2015 Softwaretechnologie / OOSE 2

Page 21: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Beispiel: Auktionen (2)

Szenarium:• Zunächst eröffnet (erzeugt) ein Auktionator eine Auktion (openAuction). Danach 

registriert er die zu versteigernden Posten, indem er diese im System erzeugt und in einer Liste (allItems) registriert (registerItem). Nachdem alle Posten registriert sind, kann die eigentliche Auktion beginnen, indem die Bieter Gebote (einen Preis) für einen bestimmten Posten abgeben (bidItemBy). Das System vergleicht das abgegebene Gebot mit dem derzeit höchsten Gebot und erzeugt ein neues Gebot (Bid). Sofern der gebotene Preis (price) den Einstandspreis erreicht oder das derzeit höchste Gebot (highestBid) für den Posten überschreitet (bidBy), wird ein neues Höchstgebot (highestBid) vermerkt (setHighestBid). Für jedes Gebot wird der (genau ein) Bieter (bidder) vermerkt. Alle Bieter der Auktion werden genau einmal in einer Kollektion  (bidders) gespeichert. Wenn keine neuen Gebote eintreffen, schließt der Auktionator die Auktion (closeAuction), indem das Ergebnis der Auktion angezeigt wird (showAuctionResult). 

Legende: Verantwortlichkeit

SS 2015 Softwaretechnologie / OOSE 2

Page 22: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Auktionen: CRC‐Karten (Vorderseite)

SS 2015 Softwaretechnologie / OOSE 2

Page 23: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

CRC2UMLCRC UML‐Analyseklassendiagramm

Klasse (Class) Klasse

Verantwortlichkeit (Responsibility) Methode

Mithelfer (Collaborator) Beziehung (Assoziation/Aggregation/Komposition) zu anderer Klasse (Mithelfer)

Attribut auf Rückseite der CRC‐Karte Attribut einer KlasseoderName des Assoziationsendes beim Mithelfer

Oberklasse / Unterklasse Vererbung

SS 2014 Softwaretechnologie U03

Page 24: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Auktionen: Klassendiagramm

SS 2015 Softwaretechnologie / OOSE 2

Page 25: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Auktionen: Rollenspiel dokumentiert in einem Sequenzdiagramm (mit Akteuren)

SS 2015 Softwaretechnologie / OOSE 2

Page 26: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Tools für die Arbeit mit CRC Karten?

• CREWSpace ‐ www.st.uni‐trier.de/crewspace/• (UML Tool) Visual Paradigm ‐ http://www.visual‐paradigm.com/

SS 2015 Softwaretechnologie / OOSE 2

Page 27: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Achtung Raumänderung!

• Wegen einer Firmenkontaktmesse im HSZ müssen nächste Woche zwei Übungen in andere Räume verlegt werden:

• Di 28.04. 14:50– HSZ/E03  SCH/A184

• Mi 29.04. 14:50– HSZ/E01  APB/E001

SS 2015 Softwaretechnologie / OOSE 2

Page 28: OOSE 2 und mit BlueJ CRC Kartenmethode (Hörsaalübung)st.inf.tu-dresden.de/files/teaching/ss15/st/OOSE2 Slides.pdf · Using inheritance (Wiederholung) • define one superclass:

Hilfe am Rechner gesucht?

Lernraum jeweils montags 6. DS, E065&

Auditorium

SS 2015 Softwaretechnologie / OOSE 2