Abstrakte Generalisierung

In Klassendiagrammen ist eine abstrakte Generalisierung eine Abhängigkeitsbeziehung, bei der eine Zuordnung zwischen dem übergeordneten und dem untergeordneten Element besteht.

Eine abstrakte Generalisierung entspricht in etwa der Generalisierungs- oder Vererbungsbeziehung zwischen Klassen. Bei der abstrakten Generalisierung zwingt eine übergeordnete Klasse die untergeordnete Klasse, bestimmte Funktionen zu übernehmen, um eine Schnittstelle zu erstellen.

Anmerkung: In C/C++ wird eine abstrakte Generalisierung durch rein virtuelle Operationen erreicht. Eine übergeordnete Klasse, die eine rein virtuelle Operation enthält, wird als abstrakte Basisklasse bezeichnet. Die abstrakte Basisklasse kann nicht instanziiert werden. Eine untergeordnete Klasse muss die rein virtuelle Operation in ihrer Deklaration überschreiben. Andernfalls kann sie nicht instanziiert werden. Die abstrakte Basisklasse erzwingt eine Entwurfsschnittstelle für eine untergeordnete Klasse.

Wenn Sie beispielsweise eine C/C++-Klasse und eine abstrakte Generalisierung darstellen, kann eine übergeordnete Klasse zu einer Schnittstelle oder Entwurfsschablone werden. Die Klasse 'Vehicle' (Fahrzeug) ist eine übergeordnete Klasse, die eine abstrakte Generalisierung verwendet. Die Klasse 'Vehicle' wird zu einer Entwurfsschablone oder -schnittstelle für ihre untergeordneten Elemente, indem diese gezwungen werden, bestimmte Operationen zu verwenden. Die untergeordneten Klasse 'Boat' (Schiff) übernimmt mehrere Operationen aus der Klasse 'Vehicle'. Die Klasse 'Boat' kann nicht ohne diese Operationen implementiert werden. Das bedeutet, die Klasse 'Vehicle' dient als Entwurfsschnittstelle für ihre untergeordneten Elemente.

In UML-Visualisierungsklassendiagrammen wird eine abstrakte Generalisierung durch das Unterscheiden des Klassentitels von anderen Klassen dargestellt. Der Klassentitel einer übergeordneten Klasse, die eine abstrakte Generalisierung verwendet, wird in Kursivschrift dargestellt. Ebenso werden alle Operationen, die von ihren untergeordneten Elementen (rein virtuellen Operationen) übernommen werden, in Kursivschrift dargestellt.

Die folgende Abbildung zeigt die Unterschiede zwischen einer normalen Generalisierungsbeziehung und einer abstrakten Generalisierungsbeziehung.

Normale C/C++-Generalisierung Abstrakte C/C++-Generalisierung
Eine normale C/C++-Generalisierung wird angezeigt. Eine abstrakte C/C++-Generalisierung wird angezeigt.

Zugehörige Konzepte
Assoziationsbeziehungen
Abhängigkeitsbeziehungen
Generalisierungsbeziehungen
Manifestationsbeziehungen
Assoziationsbeziehungen für Elemente mit Eigner
Berechtigungsbeziehungen
Details für unaufgelöste Referenzen
Rechtliche Hinweise | Feedback
(C) Copyright IBM Corporation 2004, 2005. All Rights Reserved.