Inhalt Abbildung PDF Source OO-Designkurs
 |<    <     >    >|  Generated by CoCoDiL

2.3 Vererbung Delegation

2.3.1 Verschiebung Methoden, Attribute

Ein einfaches Beispiel zur Einführung:


Abb. 2.8: PullUp Field

Diskussion: Was passiert falls es noch eine Unterklasse von Employee gibt, ohne dem Attribut Name ?

2.3.2 Template Methode

Die Methoden in der Unterklassen haben die gleiche Struktur, sind aber nicht identisch.


Abb. 2.9: Template Methode

codeBlock1 und codeBlock3 sind jeweils identisch, codeBlock2 und codeBlock4 sind unterschiedlich.

1. Extrahiere die Methoden in den Unterklassen. Gebe den extrahierten Methoden dieselben Namen.


Abb. 2.10: Template Methode

2. Schiebe die identischen Methoden der Unterklasse, in die Oberklasse.

3. Erzeuge in den Oberklasse für die verschiedenen Blöcke abstrakte Klassen


Abb. 2.11: Ergebnis Template Methode

Der eigentliche Algorithmus steht in der Oberklasse. Die Methoden code2() bzw. code4() nennt man hook-up Methoden da sie sich in den Algorithmus einklingen. Die Methode myMethod in der Oberklasse ist eine template-Methode.

Refactoring Form Template Method Entwurfsmuster Schablonenmethode (Template Method)

2.3.3 Vererbung und Delegation

Probleme mit Vererbung:

Hier ein völlig verunglücktes Objektmodell:


Abb. 2.12: Probleme mit paralleler Vererbungshierarchie

Dies ist ein abschreckendes Beispiel von paralleler Vererbungshierarchie. Eine Änderung an LKW muss in 2 verschiedenen Klassen nachvollzogen werden. Mögliche Lösungen:


Abb. 2.13: Delegation statt Vererbung

In der obigen Lösung kann im Auto die Gangschaltung ausgetauscht werden.

Die Vererbung ist zwar ein typisches Kennzeichen von OO, man sollte sie aber vorsichtig einsetzen. Bevorzuge kleine Vererbungshierarchien

Inhalt Abbildung PDF Source OO-Designkurs
 |<    <     >    >|  Generated by CoCoDiL