Objaśnienie strzałek UML


244

Ostatnio studiowałem UML i rysowałem proste diagramy zwykłymi prostymi strzałkami między klasami, ale wiem, że to nie wystarczy. Istnieje wiele innych strzałek: uogólnienie, realizacja itp., Które mają znaczenie dla czytnika diagramów.

Czy jest jakiś dobry zasób, który mógłby wyjaśnić każdą strzałkę (zwykły, prosty, kropkowany, wypełniony diamentem, diament)?

Byłoby najlepiej, gdyby miał dla nich kilka przykładów kodu.


4
Zdecydowanie polecam, biorąc pod uwagę: dzone.com/refcardz/getting-started-uml
trinity

Odpowiedzi:


475

Oto kilka wyjaśnień z dokumentacji Visual Studio 2015:

Diagramy klas UML: Odniesienie : https://msdn.microsoft.com/library/dd409437%28VS.140%29.aspx

Schemat klasy UML

5 : Stowarzyszenie : związek między członkami dwóch klasyfikatorów.

5a : Agregacja : stowarzyszenie reprezentujące relację współwłasności. Właściwość Agregacja roli właściciela jest ustawiona na Współużytkowana .

5b : Skład : stowarzyszenie reprezentujące związek w całości. Właściwość Aggregation roli właściciela jest ustawiona na Composite .

9 : Uogólnienie : Określony klasyfikator dziedziczy część definicji z ogólnego klasyfikatora. Ogólny klasyfikator znajduje się na strzałkowym końcu złącza. Atrybuty, powiązania i operacje są dziedziczone przez określony klasyfikator. Użyj narzędzia Dziedziczenie , aby utworzyć uogólnienie między dwoma klasyfikatorami.

Schemat pakietu

13 : Import : relacja między pakietami, wskazująca, że ​​jedna paczka zawiera wszystkie definicje innej.

14 : Zależność : Definicja lub implementacja klasyfikatora zależnego może ulec zmianie, jeśli zmieni się klasyfikator na końcu grotu strzałki.

Realizacja relacji

15 : Realizacja : Klasa implementuje operacje i atrybuty zdefiniowane przez interfejs. Użyj narzędzia Dziedziczenie , aby utworzyć realizację między klasą a interfejsem.

16 : Realizacja : Alternatywna prezentacja tego samego związku. Etykieta na symbolu Lollipop identyfikuje interfejs.

Diagramy klas UML: wytyczne : http://msdn.microsoft.com/library/dd409416%28VS.140%29.aspx

Właściwości stowarzyszenia

Agregacja : pojawia się jako kształt rombu na jednym końcu złącza. Można go użyć, aby wskazać, że instancje pełniące rolę rolną są instancjami należącymi do drugiej lub ją zawierają.

Jest nawigowalny : jeśli jest prawdziwy tylko dla jednej roli, strzałka pojawia się w nawigowalnym kierunku. Możesz użyć tego do wskazania możliwości nawigacji łączy i relacji z bazami danych w oprogramowaniu.


Uogólnienie : Uogólnienie oznacza, że ​​typ specjalizacyjny lub pochodny dziedziczy atrybuty, operacje i powiązania typu ogólnego lub podstawowego. Ogólny typ pojawia się na końcu relacji strzałki.

Realizacja : Realizacja oznacza, że ​​klasa implementuje atrybuty i operacje określone przez interfejs. Interfejs znajduje się na strzałkowym końcu złącza.

Daj mi znać, jeśli masz więcej pytań.


1
Ładne odniesienie, ale dla mnie Menu -> MenuItem ma taką samą relację jak Zamówienie -> OrderItem, więc oba są Kompozycjami.
Ignacio Soler Garcia

4
Oznacza to tylko, że element zamówienia należy do zamówienia i nie można go przenieść, natomiast element menu można regulować - użytkownik może zmienić pozycję elementu menu. To jest wybrane rozwiązanie. Dlaczego nie?
Gangnus

@Gangnus, dziękuję. To wyjaśnienie wyjaśniło różnicę, która mi umyka od dawna.
JMD

1
@JMD, Elementy zamówienia można również przenosić. Agregacja złożona jest zdefiniowana w specyfikacji UML w następujący sposób: Agregacja złożona jest silną formą agregacji, która wymaga, aby obiekt części był zawarty maksymalnie w jednym obiekcie złożonym na raz. Jeśli obiekt złożony zostanie usunięty, wszystkie jego części, które są obiektami, zostaną z nim usunięte. Obiekt części może (jeżeli jest to dozwolone) zostać usunięty z obiektu złożonego przed usunięciem obiektu złożonego, a zatem nie może zostać usunięty jako część obiektu złożonego.
www.admiraalit.nl

2
@ aGer Dzięki, zaktualizowałem linki do tematu i obrazu.
Esther Fan - MSFT

153

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Myślę, że te zdjęcia są zrozumiałe.


Czy niektóre z tych pojęć się nie pokrywają? A zależy B. A ma dostęp do B. Czy stowarzyszenie nie zawsze jest zależnością, a zależność zawsze jest powiązaniem?
EresDev

Na schemacie realizacja jest powtarzana dwa razy, ale z różnym obrazem. Czy możesz wyjaśnić różnicę?
zmienna


13

Moim ulubionym „ściągawką” w UML jest UML Distilled autorstwa Martina Fowlera. To jedyna jego książka, którą przeczytałem, którą polecam.


1
Interesujące, całkiem podobało mi się Refaktoryzacja. Czy masz na ten temat swoje opinie?
djna

Tak, uznałem to za nieco oczywiste i nie podobało mi się koncentrowanie się na Javie. Proszę również nie przyjmować mojej odpowiedzi za to, że jego inne książki są śmieciami.

Książka Fowlera ma również ściągawki na wewnętrznej stronie okładek książek. Naprawdę dobre na początek, zwłaszcza że następnym pytaniem będzie, w jakim kierunku będą strzały?
Ted Johnson,

12
185 stron wydaje się trochę przesadne jak na „ściągawki”!
cdyson37


9

Do szybkiego odniesienia wraz z jasnymi zwięzłymi przykładami, UML Quick Reference Allena Holuba jest doskonały:

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

(Istnieje kilka konkretnych przykładów strzałek i wskaźników w pierwszej kolumnie tabeli, z opisami w drugiej kolumnie).


Podobał mi się jego pierwszy przykład i miałem nadzieję, że stopniowo zacznie się od tego samego, z podstawami, ale to dobra lektura
killjoy

6

Bardzo łatwym do zrozumienia opisem jest dokumentacja yuml z przykładami diagramów klas, przypadków użycia i działań.


Prawdopodobnie najlepsi idioci UML podczas przeglądania tej listy; Uwaga: ta strona umożliwia także rysowanie własnych UML-ów za darmo (5).
killjoy

5

Akceptowana odpowiedź jest powiedziana: brakuje niektórych wyjaśnień. Na przykład, jaka jest różnica między połączeniem jednokierunkowym a dwukierunkowym? W podanym przykładzie oba tak istnieć. (Obie 5 na strzałkach)

Jeśli szukasz bardziej kompletnej odpowiedzi i masz więcej czasu, oto dokładne wyjaśnienie.



0

Agregacje i kompozycje są trochę mylące. Jednak myślę, że kompozycje są silniejszą wersją agregacji. Co to znaczy? Weźmy przykład: (agregacja) 1. Weź klasę i uczniów: W tym przypadku staramy się analizować relacje między nimi. Klasie ma związek z uczniów. Oznacza to, że klasa składa się z jednego lub wielu uczniów. Nawet jeśli usuniemy klasę Classroom, klasa Student nie musi niszczyć, co oznacza, że ​​możemy używać klasy Student niezależnie.

(Kompozycja) 2. Spójrz na strony i Book Class. W takim przypadku strony jest książka, co oznacza, zbiory stron sprawia, że książkę. Jeśli usuniemy klasę książki, cała klasa strony zostanie zniszczona. Oznacza to, że nie możemy używać klasy strony niezależnie.

Jeśli nadal nie masz pewności co do tego tematu, obejrzyj ten krótki wspaniały film, który wyjaśnił agregację w bardziej przejrzysty sposób.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.