Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung...

25
Hans-Jürgen Steffens Systemanalyse SS 04 1 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten Wie findet man Klassen?

Transcript of Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung...

Page 1: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 1

7. Vorlesung

Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten Wie findet man Klassen?

Page 2: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 2

Vererbung

Generalisierung / Spezialisierung („ist ein“)• Z. B. Quadrat ist ein Rechteck• Extension der Unterklasse ist eine Teilmenge der Extension ihrer

Oberklasse Eine Unterklasse verfügt über die Eigenschaften, das Verhalten

und die Assoziationen der Oberklassen (d. h. sie erbt diese von der Oberklasse)

Die Unterklasse ist vollständig konsistent mit der Oberklasse, erweitert diese aber um zusätzliche Informationen (Attribute, Operationen, Assoziationen)

Ein Objekt einer Unterklasse kann überall dort verwendet werden, wo ein Objekt der Oberklasse erlaubt ist

Es sind mehrere Stufen der Vererbung möglich, d. h. eine Unterklasse kann wiederum Oberklasse von weiteren Klassen sein (Klassenhierarchie, Vererbungsstruktur)

Page 3: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 3

Vererbung

zeichnen()entfernen()verschieben()

x : inty : intsichtbar : bool

Geometrische Figur

radius

Kreis

ab

Rechteck

x2y2x3y3

Dreieck

Oberklasse

Unterklassen

Jede Objekt zu einer der Unterklassen verfügt automatisch auch über die Attribute x, y, sichtbar und die Operations zeichnen(), entfernen(), verschieben()

Page 4: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 4

Beispiel für Vererbung

-Kunden-Nr

Kunde

-Vorname-Nachname-Geschlecht-Telefon-Kreditkarten-Nr

Privatkunde

-Firmenname

Firmenkunde

-Kreditlimit

Stammkunde

-Vorname-Nachname-Geschlecht-Telefon

Mitarbeiter1

*

Ansprechpartner

-Straße-Hausnr-PLZ-Ort

Adresse

0..1 1

Lieferadresse

0..1

1Rechnungsadresse

0..1

1

Rechnungsadresse

Page 5: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 5

Generalisierung im Beispiel

Jeder Stammkunde ist ein Privatkunde Jeder Firmenkunde ist ein Kunde, jeder Privatkunde ist ein Kunde

Kunden

Privatkunden

Stamm-kunden

Firmen-kunden

Page 6: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 6

Was wird vererbt?

Attribute

• Attribute der Oberklasse incl. Typ (Werte werden nicht vererbt)

• Klassenattribute und ihre Werte (es handelt sich um dasselbe Attribut)

Operationen

• Alle Operationen, die auf Objekte der Oberklasse angewendet werden könne, können auch auf Objekte der Unterklasse angewendet werden.

• Wird eine Nachricht an ein Objekt geschickt, so wird zunächst bei dessen Klasse nach der entsprechenden Operation gesucht, anschließend bei der direkten Oberklasse, anschließend bei deren Oberklasse usw.

• Klassenoperationen können ebenfalls auf Unterklassen angewendet werden

Assoziationen

• Wenn Objekte der Oberklasse Beziehungen mit Objekten einer bestimmten Klasse eingehen können, dann können Objekte der Unterklasse dies ebenfalls

Page 7: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 7

Einfach- und Mehrfach-Vererbung

Einfachvererbung: Jede Klasse kann maximal eine direkte Oberklasse haben

Mehrfachvererbung: Klassen können auch zwei oder mehr Oberklassen haben (und von diesen erben)

Mehrfachvererbung wird von vielen Programmiersprachen (z. B. Java) nicht unterstützt

Wirft eine Reihe von Problemstellungen auf, was passiert z. B. bei Vererbung gleichnamiger Operationen von verschiedenen Oberklassen?

Page 8: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 8

Mehrfach-Vererbung

Kunden-Nr

Kunde

Kreditkarten-Nr

Privatkunde Firmenname

Firmenkunde

Kreditlimit

Stammkunde

VornameNachnameGeschlechtTelefon

Mitarbeiter1

*

Ansprechpartner

VornameNachnameGeschlechtTelefon

Person

Privatkundeerbt „Kunden-Nr“von Kunde undVorname, Nach-name, Geschlecht, Telefon von Person

Page 9: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 9

Merfach-Vererbung

Quadrat ist ein Rechteck und Quadrat ist eine Raute.

Nachteil dieser Modellierung: Quadrat erbt alle Attribute von Rechteck und Raute und muss diesen auch Werte zuweisen (a=b=c, x2=x+a, y2=y+b)

zeichnen()entfernen()verschieben()

x : inty : intsichtbar : bool

Geometrische Figur

radius

Kreis

ab

Rechteck

x2y2c

Raute

Quadrat

Page 10: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 10

Polymorphismus

„Vielgestaltigkeit“ Verschiedene Objekte, die auf die gleiche Botschaft reagieren,

können unterschiedliche Implementierungen besitzen Eine Unterklasse kann eine von der Oberklasse geerbte

Operation überschreiben

• Sie muss allerdings die gleichen Parameter und Rückgabewerte besitzen

Im Falle einer abstrakten Oberklasse kann die Operation in der Oberklasse eine abstrakte Operation sein, d. h. sie verfügt selbst über keine Implementierung, sondern überlässt die Implementierung den Unterklassen

Page 11: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 11

Polymorphismus

zeichnen()entfernen()verschieben()

x : inty : intsichtbar : bool

Geometrische Figur

zeichnen()

radius

Kreis

zeichnen()

ab

Rechteck

Es existieren verschiedene Implementierungen für die Operation zeichnen(), je nachdem ob ein Kreis oder ein Rechteck gezeichnet werden soll. Diese Operations überschreiben die gleichnahmige Operation der Oberklasse.

Page 12: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 12

Konkrete und abstrakte Klassen

Von konkreten Klassen kann es Objekte geben Von abstrakten Klassen selbst kann es keine Objekte geben, nur

von ihren Unterklassen. Abstrakte Klassen werden durch Kursivschreibung des Namens

gekennzeichnet

Page 13: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 13

Abstrakte Operation

Die Oberklasse verfügt nur über die Definition der Operation, nicht aber über eine Implementierung.

Die Unterklassen müssen entsprechende Implementierungen bereit stellen.

Zweck: Aufgrund der Definition in der Oberklasse weiß man, dass man jedem Objekt einer beliebigen Unterklasse eine entsprechende Nachricht schicken kann, selbst wenn man die genaue Unterklasse noch gar nicht kennt.

Abstrakte Operationen werden durch Kursivschreibung des Namens gekennzeichnet.

Page 14: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 14

Beispiele für abstrakte und konkrete Klassen

zeichnen()entfernen()verschieben()

x : inty : intsichtbar : bool

Geometrische Figur

zeichnen()

radius

Kreis

zeichnen()

ab

Rechteck

Von dieser Klasse können keine Objekte angelegt werden, d. h. jede geometrische Figur muss entweder ein Kreis oder ein Rechteck sein. Kennzeichnung von abstrakten Klassen durch Kursivschreibung.

Abstrakte Operation, d. h. die Klasse Geometrische Figur verfügt nur über die Definition der Operation, nicht aber über eine Implementierung. Die Unterklassen Kreis und Rechteck müssen Implementierungen bereit stellen.

Page 15: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 15

Beispiel für abstrakte und konkrete Klassen

Kunden-Nr

Kunde

VornameNachnameGeschlechtTelefonKreditkarten-Nr

Privatkunde

Firmenname

Firmenkunde

Kreditlimit

Stammkunde

Abstrakt – Kundenmüssen immerPrivat- oder Firmen-kunden sein.

Konkret, d. h. es können auch Privatkunden angelegt werden, die keine Stammkunden sind.

Page 16: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 16

Pakete (Packages)

UML-Konstrukt zur Gruppierung von Modellelementen (z. B. Klassen)

Ein Paket kann selbst wieder Pakete enthalten Dient der Strukturierung großer, komplexer Modelle (Zerlegung in

Teilmodelle) Zwischen den Paketen können Abhängigkeiten modelliert

werden, um bei einer Änderung herauszufinden, wo möglicherweise weitere Änderungen erforderlich sind.

Jedes Modellelement gehört zu maximal einem Paket Pakete definieren einen Namensraum (namespace), in dem die

Namen eindeutig sein müssen. Außerhalb des Pakets werden sie folgendermaßen identifiziert:

Paketname::Klassennname

Page 17: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 17

Beispiel für Package Diagram

Kundenverwaltung

Auftragsverwaltung

Lagerverwaltung

Abhängigkeiten

Jedem Package kann wieder ein Modell, z. B. ein Klassendiagrammhinterlegt sein.

Page 18: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 18

Notation von Paketen

System

Package1 Package2

Package3

Page 19: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 19

CRC-Karten

Class/Responsibility/Collaboration CRC-Karte: Karteikarte, in die Klassenname, Verantwortlichkeiten

der Klasse (Wissen und Operationen) und die Zusammenarbeit mit anderen Klassen eingetragen wird

Ergänzung zum OOA-Modell

• Dienen der Ausarbeitung, Diskussion und Detaillierung der Klassendefinitionen

• Werden im Rahmen von CRC-Workshops von interdisziplinären Teams genutzt

• CRC-Karten werden an Whiteboard geheftet, durch Linien verbunden (zur Entwicklung von Vererbungen, Aggregationen, Assoziationen), wieder geändert usw.

Page 20: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 20

Beispiel für CRC-Karte

Class Reservierung

Responsibilities•Gewünschter Kfz-Typ•Mietzeitraum von bis•Gewünschte Ausstattung•Abhol-Niederlassung•Rückgabe-Niederlassung•Anlegen•Bestätigen•Ändern•Stornieren

Collaborations•Kunde•Kfz-Typ•Ausstattungsmerkmal•Vermietung

Page 21: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 21

CRC-Karte vs. UML-Klassendiagramm

erfassen()drucken()

NummerDatum

Bestellung

ArtikelnrBezeichnungAnzahl

Bestellposition

1 1..*

Class Bestellung

Responsibilities•Verwaltet eine Bestellung

•Delegiert Aufgaben an Bestellpositionen

Collaborations•Bestellposition

Page 22: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 22

Wie findet man Klassen? (1)

Dokumentenanalyse

• Dokumente, z. B. Formulare, enthalten Attribute sowie Hinweise auf Klassen und Assoziationen

• Hieraus kann bottom-up ein Klassendiagramm entwickelt werden Beschreibung der Use Cases

• Top-down-Ableitung von Klassen

• Substantive und z. T. Verben stellen potenzielle Klassen dar, die dann auf mögliche Attribute usw. untersucht werden müssen

Page 23: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 23

Wie findet man Klassen? (2)

Untersuchung, ob folgende Kategorien vorkommen:

• Konkrete Objekte (Dinge)

• Personen und deren Rollen

• Informationen über Aktionen

• Orte

• Organisationen

• Behälter

• Dinge in einem Behälter

• Ereignisse

• Kataloge

• Verträge

Page 24: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 24

Zusammenfassung

Generalisierungen stellen Vererbungsbeziehungen zwischen Klassen mit der Bedeutung „ist ein“ dar.

Die Unterklassen erben Attribute, Operationen und Assoziationen von den Oberklassen.

Man unterscheidet Einfachvererbung, wo jede Klasse nur eine Oberklasse haben darf, und Mehrfachvererbung.

Unterklassen können die in der Oberklasse definierten Operationen überschreiben (Polymorphismus).

Klassen, von denen keine direkten Objekte gebildet werden können, nennt man abstrakt, die anderen konkret.

Pakete (Packages) strukturieren komplexe Modelle. CRC-Karten sind ein Mittel zur Entwicklung von Klassen. Klassen können über Dokumentenanalyse, die Beschreibung der

Use Cases und die Identifikation von typischen Kategorien gefunden werden.

Page 25: Hans-Jürgen Steffens Systemanalyse SS 041 7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus Konkrete und abstrakte Klassen Pakete CRC-Karten.

Hans-Jürgen Steffens Systemanalyse SS 04 25

Übungsfragen

Was versteht man unter Vererbung? Was wird vererbt? Erläutern Sie:

• Einfach- und Mehrfachvererbung

• Konkrete und abstrakte Klassen

• Polymorphismus Was sind CRC-Karten? Wie sind sie aufgebaut? Wozu verwendte man Pakete in der UML? Wie findet man Klassen?