Um das Bild besser diskutieren zu können, habe ich Ihr Bild mit einigen Zahlen versehen. Hoffentlich hilft mir das, in meinem Schreiben klarer zu werden.
Es gibt wirklich drei Arten von Linien, die hier verwendet werden - Assoziation (1), Zusammensetzung (4-> 2) und Vererbung (3).
Eine durchgezogene Linie, die zwei Klassen verbindet, z. B. zwischen Client
und BookComponent
ist einfach eine Assoziationsbeziehung. Es wird häufig verwendet, um anzuzeigen, dass eine Klasse etwas weiß (möglicherweise wie in Receives als Argument für eine Methode) oder eine andere Klasse hat (möglicherweise als Instanzvariable). Ohne Dekorationen oder mit einem Pfeil an beiden Enden ist die Beziehung bidirektional - die beiden Klassen teilen die Beziehung und kennen sich. In einigen Fällen, wie z. B. in Zeile 1 in der Abbildung, ist die Beziehung gerichtet. Die Client
Klasse weiß davon BookComponent
, aber das Gegenteil ist nicht der Fall, da BookComponent
sie kein oder kein Wissen hat Client
. Beachten Sie, dass es auch andere Anmerkungen gibt, die in Zuordnungsbeziehungen angezeigt werden können, z. B. Multiplizität oder Klassenrollen.
Die nächste Zeile ist die Zeile , die eine Verbindung BookComposite
zu BookComponent
. Es ist eine Assoziation, ähnlich wie die Grenze zwischen Client
und BookComponent
. Die Anmerkungen an den mit 2 und 4 gekennzeichneten Punkten fügen jedoch zusätzliche Informationen zur Beziehung hinzu. Linie in Punkt 1, der Pfeil in Punkt 2 bedeutet dasselbe - BookComposite
kennt BookComponent
Instanzen, aber nicht umgekehrt (eine Richtungsbeziehung). Die Anmerkung an Punkt 4 gibt eine Aggregationsbeziehung an - BookComposite
ist eine Sammlung von BookComponent
. Es handelt sich jedoch nicht um eine starke Beziehung (wie auch die starke Zusammensetzungsbeziehung). Daher zeigt die Aggregation an, dass a BookComponent
an Stellen außerhalb von a angeben kann BookComposite
(Sie benötigen a nicht, um a BookComposite
zu haben BookComponent
).
Zu beachten ist, dass der Pfeil, der zum Anzeigen von Richtungszuordnungen verwendet wird, normalerweise kein durchgehender schwarzer Pfeil ist, wie in diesem Bild gezeigt. Ich sehe es normalerweise als einen offenen Pfeil, der eher wie ein Pfeil aussieht v
als der, der in Ihrem Bild gezeigt wird.
Schließlich ist der mit 3 bezeichnete Punkt die Vererbungsbeziehung, die Sie in Ihrer Frage erwähnt haben.
Wenn Sie mehr über die UML-Modellierung erfahren möchten, empfehle ich den Kauf von UML Distilled . Es ist ein gutes Buch von Martin Fowler, das Klasse, Sequenz, Objekt, Paket, Bereitstellung, Anwendungsfall, Zustandsmaschine, Aktivität, Kommunikation, zusammengesetzte Struktur, Komponente, Zusammenarbeit, Interaktionsübersicht und Zeitdiagramme behandelt.
Ihr Bild zeigt verschiedene Beziehungen.
Die Beziehung zwischen den Klassen Client und BookComponent ist eine Containment-Beziehung. Dh der Client enthält eine Instanz von BookComponent.
BookComposite und BookComponent haben zwei Beziehungen. Die geöffnete Pfeilspitze ist eine Generalisierungsbeziehung (dh BookComponent verallgemeinert BookComposite oder mit anderen Worten, BookComposite ist auf BookComponent spezialisiert / leitet sich von BookComponent ab). Die geschlossene Pfeilspitze mit einem Diamanten am Schwanz ist eine Aggregation. Das heißt, BookComposite enthält eine Sammlung von BookComponent. Die Tatsache, dass der Diamant nicht gefüllt ist, ist ebenfalls von Bedeutung. Dies bedeutet, dass der Lebenszyklus der enthaltenen BookComponents nicht an die Lebensdauer des enthaltenen BookComposite gebunden ist. Wenn es anstelle von Aggregation gefüllt wäre, wäre es eine Komposition, und wenn BookComposite zerstört würde, wären es auch die BookComponents
quelle