Viele Dinge im echten Leben haben gewisse Eigenschaften gemein. Hunde und Katzen sind beispielsweise beides Tiere. Auch
Klassen können gemeinsame Eigenschaften haben. Beziehungen dieser Art zwischen Klassen können mit einer
Generalisierung transparenter gestaltet werden. Wenn Sie gemeinsame Merkmale in eigene Klassen extrahieren,
lässt sich das Geschäftsmodell einfacher ändern.
Eine Klasse, die allgemeine Merkmale von einer anderen Klasse erbt, ist eine untergeordnete Klasse. Die Klasse, von der
die untergeordnete Klasse Merkmale erbt, ist die übergeordnete Klasse. Eine Generalisierung zeigt, dass eine Klasse von
einer anderen erbt, d. h., dass die Definition der übergeordneten Klasse, einschließlich aller Attribute und
Operationen, auch für die untergeordnete Klasse gilt. Die Beziehungen der übergeordneten Klasse werden ebenfalls
geerbt.
Generalisierung kann in verschiedenen Stadien stattfinden. Auf diese Weise können komplexe Vererbungshierarchien mit
mehreren Ebenen modelliert werden, obwohl die Anzahl der Ebenen des besseren Verständnisses wegen beschränkt werden
sollte. Allgemeine Eigenschaften können in den oberen Teil der Vererbungshierarchie und besondere Eigenschaften in den
unteren Teil gestellt werden. Anders ausgedrückt, Sie können mit Generalisierungsbeziehungen spezialisierte Versionen
eines allgemeineren Konzepts modellieren.
Beispiel:
Passagiere, die am Check-in-Schalter ankommen, bringen verschiedene Arten von Gepäck mit sich: normales Gepäck,
Handgepäck und Sondergepäck. Aus der Sicht der Fluggesellschaft haben sie, abgesehen davon, dass es sich in allen
Fällen um Gepäck handelt, verschiedene gemeinsame Eigenschaften. Jedes Gepäckstück hat beispielsweise einen Besitzer
und ein Gewicht. Diese gemeinsamen Merkmale können durch Attribute und Operationen in einer separaten Klasse "Gepäck"
modelliert werden. Normales Gepäck, Handgepäck und Sondergepäck erben die Eigenschaften dieser Klasse.
Die Klassen Normales Gepäck, Handgepäck und Sondergepäck haben gemeinsame Eigenschaften. Sie sind alle spezialisierte
Versionen des allgemeinen Konzepts Gepäck.
Eine Klasse kann mehrere andere Klassen erben. Dies wird als Mehrfachvererbung bezeichnet. Gewöhnlich wird jedoch nur
eine Klasse geerbt. Wenn die Klasse mehrere Klassen erbt, ist es wichtig zu prüfen, wie die Assoziationen, die
Attribute und die Operationen in den übergeordneten Klassen benannt sind. Sollte derselbe Name in mehreren Vorfahren
vorkommen, müssen Sie beschreiben, was dieser Name für die jeweilige erbende Klasse bedeutet.
Eine Klasse, die nur deshalb existiert, damit andere Klassen sie erben können, ist eine abstrakte Klasse. Eine
abstrakte Klasse wird nicht instanziert. Ein Objekt einer Klasse, das eine abstrakte Klasse erbt, entspricht jedoch
seiner eigenen Beschreibung und der Beschreibung der geerbten Klasse. Klassen, die im Geschäft instanziert werden, sind
konkrete Klassen..
In diesem Kontext bedeutet "abstrakt" etwas völlig anderes als gewöhnlich. Es ist durchaus möglich, dass etwas im
herkömmlichen Sinne abstrakt ist, ohne dass es von einer abstrakten Klasse dargestellt wird. Schulstunden sind ein
abstraktes Phänomen oder Konzept, weil man sie nicht anfassen kann. Wenn Sie jedoch Schulaufgaben modellieren, gleicht
eine Schulstunde eher einer konkreten Klasse, d. h. einer Klasse, die instanziert wird. Gleichermaßen können konkrete
Phänomene, z. B. Produkte und Personen, abstrakte Klassen erzeugen, wenn sie Eigenschaften mit anderen Klassen gemein
haben.
Der Hauptzweck der Vererbung ist, ein Objektmodell zu erhalten, in dem Änderungen auf einfache Weise untergebracht
werden können. Vererbung muss jedoch mit Sorgfalt eingesetzt werden:
-
Vererbung ist "lediglich" eine Methode, die Beschreibung zu strukturieren. Sie visualisieren, welche Phänomene
gemeinsame Eigenschaften haben.
Wenn es zur Realisierung kommt, müssen Sie trotzdem einen Mitarbeiter finden, der in der Lage ist, sowohl den Job
der übergeordneten Klasse als auch die der untergeordneten Klasse auszuführen, wenn eine solche instanziert werden
sollte.
-
Verwenden Sie Generalisierungen nur zwischen Klassen desselben Stereotyps.
Da unterschiedliche Klassenstereotypen unterschiedliche Zwecke haben, würde eine Generalisierung von einer Klasse
eines Stereotyps zu einer Klasse eines anderen Stereotyps keinen Sinn machen. Wenn Sie beispielsweise eine
Mitarbeiterklasse einen Geschäftsentität erben lassen, würde der Mitarbeiter eine Art Hybridklasse werden.
|