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.
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 |