Wyliczenie diagramu klas UML

145

Modeluję diagram klas. Atrybutem klasy jest wyliczenie. Jak to modelować? Zwykle robisz coś takiego:

- name : string

Ale jak to zrobić z wyliczeniem?

Martijn
źródło

Odpowiedzi:

198

Są po prostu pokazane w ten sposób:

_______________________
|   <<enumeration>>   |
|    DaysOfTheWeek    |
|_____________________|
| Sunday              |
| Monday              |
| Tuesday             |
| ...                 |
|_____________________|

A potem po prostu miej związek między tym a twoją klasą.

James B.
źródło
16
Wyliczenia w rzeczywistości działają bardziej jak typy danych niż klasy w UML, więc zwykle skojarzenia nie są wyświetlane więcej niż byłyby, gdyby zadeklarował atrybut typu Integer. Jeśli narzędzie do modelowania ma jawną obsługę wyliczeń, należy tego używać i w razie potrzeby używać wyłącznie notacji stereotypowej Class + <<enumeration>>.
Tom Morris
Czy możesz powiedzieć, gdzie mogę znaleźć stereotyp <<enumeration>> dla ArgoUML?
Timofey
@Tim ArgoUML ma pierwszorzędne wsparcie dla wyliczeń, więc nie ma potrzeby używania stereotypu
Tom Morris
<<enumeration>>w rzeczywistości nie jest stereotypem, ale słowem kluczowym. Niestety autorzy UML nie dokonali żadnego wizualnego zróżnicowania.
qwerty_so
68

Jeśli Twoje narzędzie do modelowania UML obsługuje określanie wyliczenia, powinieneś tego użyć. Prawdopodobnie będzie to łatwiejsze do zrobienia i zapewni Twojemu modelowi silniejszą semantykę. Wizualnie wynik będzie bardzo podobny do klasy ze <<enumeration>>stereotypem, ale w metamodelu UML wyliczenie jest w rzeczywistości oddzielnym (meta) typem.

+---------------------+
|   <<enumeration>>   |
|    DayOfTheWeek     |
|_____________________|
| Sunday              |
| Monday              |
| Tuesday             |
| ...                 |
+---------------------+

Po zdefiniowaniu można go używać jako typu atrybutu, tak jak w przypadku typu danych lub nazwy jednej z własnych klas.

+---------------------+
|        Event        |
|_____________________|
| day : DayOfTheWeek  |
| ...                 |
+---------------------+

Jeśli używasz ArgoEclipse lub ArgoUML, na pasku narzędzi znajduje się menu rozwijane, które umożliwia wybór między typem danych, wyliczeniem, sygnałem itp., Które pozwolą ci stworzyć własne wyliczenia. Przedział, który zwykle zawiera atrybuty, można następnie wypełnić EnumerationLiterals dla wartości wyliczenia.

Oto zdjęcie nieco innego przykładu w ArgoUML: wprowadź opis obrazu tutaj

Tom Morris
źródło
7
Dzięki za zrzut ekranu ArgoUML.
Petri Tuononen
1

Zwykle modelujesz samo wyliczenie jako klasę ze enumstereotypem

annakata
źródło