Was bedeutet der Pfeil in einem Klassendiagramm?

8

Ich brauche Hilfe, um zu verstehen, was der Pfeil in einem UML-Klassendiagramm bedeutet, genauer gesagt in diesem zusammengesetzten Diagramm. Was ist der Unterschied zwischen der einfachen Linie (von einer Klasse zu einer anderen) und dem Pfeil (nicht der Vererbungspfeil, ich beziehe mich auf die schwarze)?

UML-Klassendiagramm

John Smith
quelle

Antworten:

13

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.

Kommentiertes Klassendiagramm

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 Clientund BookComponentist 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 ClientKlasse weiß davon BookComponent, aber das Gegenteil ist nicht der Fall, da BookComponentsie 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 BookCompositezu BookComponent. Es ist eine Assoziation, ähnlich wie die Grenze zwischen Clientund 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 - BookCompositekennt BookComponentInstanzen, aber nicht umgekehrt (eine Richtungsbeziehung). Die Anmerkung an Punkt 4 gibt eine Aggregationsbeziehung an - BookCompositeist 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 BookComponentan Stellen außerhalb von a angeben kann BookComposite(Sie benötigen a nicht, um a BookCompositezu 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 vals 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.

Thomas Owens
quelle
@ThomasOwens was bedeutet es für einen Kunden, über die Buchkomponente Bescheid zu wissen? Wann ist A von B bekannt? Ich verstehe nicht wirklich, in welche Richtung ich die Pfeile zeichnen soll ...
user1534664
@ user1534664 Wenn A über B Bescheid weiß, bedeutet dies, dass A Methoden für B aufrufen kann. Normalerweise bedeutet dies, dass B eine Eigenschaft von A ist oder B als Argument an eine Methode für B übergeben wird. Die Pfeilrichtung gibt an, in welche Richtung sich die Schnittstelle befindet kann aufgerufen werden. Ein Pfeil von A nach B bedeutet, dass A die Schnittstelle von B verwenden kann (A kennt B).
Thomas Owens
3

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

Michael Brown
quelle