Erläuterung der UML-Pfeile


244

Ich habe kürzlich UML studiert und einfache Diagramme mit gewöhnlichen einfachen Pfeilen zwischen Klassen gezeichnet, aber ich weiß, dass es nicht genug ist. Es gibt viele andere Pfeile: Verallgemeinerung, Realisierung usw., die für den Diagrammleser von Bedeutung sind.

Gibt es eine nette Ressource, die jeden Pfeil erklären könnte (gewöhnlich, glatt, gepunktet, mit Diamanten gefüllt, Diamant)?

Es wäre am besten, wenn es einige Codebeispiele für sie geben würde.


4
Ich würde dringend empfehlen, dies zu berücksichtigen: dzone.com/refcardz/getting-started-uml
Trinity

Antworten:


475

Hier einige Erklärungen aus den Visual Studio 2015-Dokumenten:

UML-Klassendiagramme: Referenz : https://msdn.microsoft.com/library/dd409437%28VS.140%29.aspx

UML-Klassendiagramm

5 : Assoziation : Eine Beziehung zwischen den Mitgliedern zweier Klassifikatoren.

5a : Aggregation : Eine Vereinigung, die eine gemeinsame Eigentumsbeziehung darstellt. Die Aggregationseigenschaft der Eigentümerrolle ist auf Freigegeben festgelegt .

5b : Zusammensetzung : Eine Assoziation, die eine Ganzteilbeziehung darstellt. Die Aggregationseigenschaft der Eigentümerrolle ist auf Composite festgelegt .

9 : Generalisierung : Der spezifische Klassifikator erbt einen Teil seiner Definition vom allgemeinen Klassifikator. Der allgemeine Klassifikator befindet sich am Pfeilende des Anschlusses. Attribute, Zuordnungen und Operationen werden vom jeweiligen Klassifizierer geerbt. Verwenden Sie das Vererbungswerkzeug , um eine Verallgemeinerung zwischen zwei Klassifizierern zu erstellen.

Paketdiagramm

13 : Importieren : Eine Beziehung zwischen Paketen, die angibt, dass ein Paket alle Definitionen eines anderen Pakets enthält.

14 : Abhängigkeit : Die Definition oder Implementierung des abhängigen Klassifikators kann sich ändern, wenn der Klassifikator am Ende der Pfeilspitze geändert wird.

Realisierungsbeziehung

15 : Realisierung : Die Klasse implementiert die von der Schnittstelle definierten Operationen und Attribute. Verwenden Sie das Vererbungstool , um eine Realisierung zwischen einer Klasse und einer Schnittstelle zu erstellen.

16 : Realisierung : Eine alternative Darstellung derselben Beziehung. Das Etikett auf dem Lutschersymbol kennzeichnet die Schnittstelle.

UML-Klassendiagramme: Richtlinien : http://msdn.microsoft.com/library/dd409416%28VS.140%29.aspx

Eigenschaften eines Vereins

Aggregation : Dies erscheint als Rautenform an einem Ende des Verbinders. Sie können damit angeben, dass Instanzen in der Aggregationsrolle Instanzen der anderen besitzen oder enthalten.

Ist navigierbar : Wenn dies nur für eine Rolle zutrifft, wird ein Pfeil in navigierbarer Richtung angezeigt. Sie können dies verwenden, um die Navigierbarkeit von Links und Datenbankbeziehungen in der Software anzuzeigen.


Generalisierung : Generalisierung bedeutet, dass der spezialisierte oder abgeleitete Typ Attribute, Operationen und Zuordnungen des allgemeinen oder Basistyps erbt. Der allgemeine Typ wird am Pfeilspitzenende der Beziehung angezeigt.

Realisierung : Realisierung bedeutet, dass eine Klasse die von der Schnittstelle angegebenen Attribute und Operationen implementiert. Die Schnittstelle befindet sich am Pfeilende des Anschlusses.

Lassen Sie mich wissen, wenn Sie weitere Fragen haben.


1
Netter Hinweis, aber für mich hat ein Menü -> Menüelement die gleiche Beziehung wie ein Auftrag -> Bestellelement, sodass beide Kompositionen sind.
Ignacio Soler Garcia

4
Beides bedeutet nur, dass die Bestellposition zu einer Bestellung gehört und nicht verschoben werden kann, während die Menüposition einstellbar sein kann - der Benutzer kann möglicherweise die Position der Menüposition ändern. Es ist die gewählte Lösung. Warum nicht?
Gangnus

@ Gangnus, danke. Diese Erklärung verdeutlichte den Unterschied, der mir lange entgangen ist.
JMD

1
@JMD, Die Bestellpositionen können ebenfalls verschoben werden. Die zusammengesetzte Aggregation wird in der UML-Spezifikation wie folgt definiert: Die zusammengesetzte Aggregation ist eine starke Form der Aggregation, bei der ein Teilobjekt jeweils in höchstens einem zusammengesetzten Objekt enthalten sein muss. Wenn ein zusammengesetztes Objekt gelöscht wird, werden alle seine Teilinstanzen, die Objekte sind, damit gelöscht. Ein Teilobjekt kann (sofern nicht anders zulässig) aus einem zusammengesetzten Objekt entfernt werden, bevor das zusammengesetzte Objekt gelöscht wird, und daher nicht als Teil des zusammengesetzten Objekts gelöscht werden.
www.admiraalit.nl

2
@ aGer Danke, ich habe das Thema und die Bildlinks aktualisiert.
Esther Fan - MSFT

153

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Ich finde diese Bilder verständlich.


Überlappen sich einige dieser Konzepte nicht? A hängt von B ab. A hat Zugriff auf B. Ist eine Assoziation nicht immer eine Abhängigkeit und eine Abhängigkeit immer eine Assoziation?
EresDev

Im Diagramm wird die Realisierung zweimal wiederholt, jedoch mit einem anderen Bild. Können Sie bitte den Unterschied erläutern?
Variable


13

Mein Lieblings-UML-Spickzettel ist UML Distilled von Martin Fowler. Es ist das einzige seiner Bücher, das ich gelesen habe und das ich empfehle.


1
Interessant, ich mochte Refactoring sehr. Haben Sie eine Meinung dazu?
DJNA

Ja, ich fand das alles ein bisschen offensichtlich und mochte die Konzentration auf Java nicht. Bitte nehmen Sie meine Antwort auch nicht so, dass seine anderen Bücher Müll sind.

Fowlers Buch hat auch einen Spickzettel auf der Innenseite der Buchumschläge. Wirklich gut für den Anfang, zumal Ihre nächste Frage sein wird, in welche Richtung die Pfeile gehen?
Ted Johnson

12
185 Seiten scheinen für einen "Spickzettel" etwas übertrieben!
cdyson37


9

Die UML-Kurzreferenz von Allen Holub bietet eine hervorragende Referenz sowie klare, präzise Beispiele:

http://www.holub.com/goodies/uml/

(In der ersten Spalte einer Tabelle gibt es einige spezifische Beispiele für Pfeile und Zeiger mit Beschreibungen in der zweiten Spalte.)


Ich mochte sein erstes Beispiel und hoffte, dass Hew schrittweise mit den Grundlagen in die gleiche Richtung gehen würde, aber es ist eine gute Lektüre
Killjoy

6

Eine sehr leicht verständliche Beschreibung ist die Dokumentation von yuml mit Beispielen für Klassendiagramme, Anwendungsfälle und Aktivitäten.


Wahrscheinlich die besten UML-für-Idioten, während Sie diese Liste durchgehen; Hinweis: Auf dieser Site können Sie auch kostenlos Ihre eigenen UMLs zeichnen (5).
Killjoy

5

Die akzeptierte Antwort lautet: Es fehlen einige Erklärungen. Was ist zum Beispiel der Unterschied zwischen einer unidirektionalen und einer bidirektionalen Assoziation? In dem bereitgestellten Beispiel beide tun exist. (Beide 5er in den Pfeilen)

Wenn Sie nach einer vollständigeren Antwort suchen und mehr Zeit haben, finden Sie hier eine ausführliche Erklärung.



0

Aggregationen und Kompositionen sind etwas verwirrend. Denken Sie jedoch, dass Kompositionen eine stärkere Version der Aggregation sind. Was bedeutet das? Nehmen wir ein Beispiel: (Aggregation) 1. Nehmen Sie ein Klassenzimmer und Schüler: In diesem Fall versuchen wir, die Beziehung zwischen ihnen zu analysieren. Ein Klassenzimmer hat eine Beziehung zu den Schülern. Das bedeutet, dass das Klassenzimmer aus einem oder mehreren Schülern besteht. Selbst wenn wir die Classroom-Klasse entfernen, muss die Students-Klasse nicht zerstört werden, was bedeutet, dass wir die Student-Klasse unabhängig verwenden können.

(Komposition) 2. Schauen Sie sich die Seiten und die Buchklasse an. In diesem Fall Seiten sind ein Buch, das Sammlung von Seiten macht das Buch bedeutet. Wenn wir die Buchklasse entfernen, wird die gesamte Page-Klasse zerstört. Das heißt, wir können die Klasse der Seite nicht unabhängig verwenden.

Wenn Sie sich zu diesem Thema noch nicht sicher sind, schauen Sie sich dieses kurze, wundervolle Video an, in dem die Aggregation klarer erklärt wurde.

https://www.youtube.com/watch?v=d5ecYmyFZW0

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.