UML (Unified Modeling Language): Generalisierungsbeziehung

in StemSociallast month

Generalisierungsbeziehung

Das Konzept der Klasse arbeitet Gemeinsamkeiten von Objekten heraus. Nun werden wir einen Schritt weitergehen und klassenübergreifende Gemeinsamkeiten betrachten. Die objektorientierte Modellierung bietet die Möglichkeit, Gemeinsamkeiten wie z. B. Attribute oder Operationen unterschiedlicher “spezieller“ Klassen in einer “allgemeineren“ Klasse zusammenzufassen. Beziehungen zwischen spezielleren und allgemeineren Klassen werden Generalisierung genannt. Generalisierung bedeutet, dass alles, was für eine Instanz der allgemeineren Klasse gilt, auch für eine Instanz der spezielleren Klasse zutrifft. Die allgemeinere Klasse wird auch Oberklasse oder Basisklasse und die speziellere Klasse Unterklasse oder Kindsklasse genannt. Aus der Welt der Programmiersprachen kennt man dieses Konzept als Vererbung oder Polymorphismus.

In Diagrammen werden Generalisierungsbeziehungen mit zu der Oberklasse weisenden Pfeilen mit nicht ausgefülltem Dreieck und durchgezogener Linie dargestellt.

Beispiel
Wir betrachten Privatkunden und Firmenkunden und fassen die gemeinsamen Merkmale wie z. B. Name und Adresse in einer neuen gemeinsamen Oberklasse Kunde zusammen. Jede Instanz der Klasse Firmenkunde ist somit auch Instanz der Klasse Kunde. Ein Firmenkunde ist ein spezieller Kunde und alles, was für einen Kunden gilt, trifft auch für einen Firmenkunden zu. Die Unterklassen Firmenkunde und PrivatKunde erben die Attribute sowie die gemeinsamen Operationen bonitaet() und mahnen() sowie alle Assoziationen von der Oberklasse Kunde. Ihre Instanzen können überall dort eingesetzt werden, in denen Instanzen der Oberklasse Kunde vorkommen.


Abbildung: Ein Beispiel einer Vererbung

Quelle
Shaw, M. Abstraction Techniques in Modern Programming Languages IEEE Software 1 (4), 1984, S. 10
Fowler, M. UML Distilled Addison-Wesley, Reading, Mass., 1997