Перечисление диаграммы классов UML

149

Я моделирую диаграмму классов. Атрибут класса - это перечисление. Как мне это смоделировать? Обычно вы делаете что-то вроде этого:

- name : string

Но как это сделать с помощью перечисления?

Мартейн
источник

Ответы:

208

Их просто показывают так:

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

А затем просто установите связь между этим и вашим классом.

Джеймс Б.
источник
17
Перечисления на самом деле больше похожи на типы данных, чем на классы в UML, поэтому обычно ассоциации не отображаются больше, чем если бы вы объявили атрибут типа Integer. Если ваш инструмент моделирования имеет явную поддержку перечислений, вы должны использовать это и использовать только стереотипную нотацию Class + <<enumeration>> в качестве запасного варианта при необходимости.
Том Моррис
Подскажите, где мне найти стереотип <<enumeration>> для ArgoUML?
Тимофей
@Tim ArgoUML имеет первоклассную поддержку перечислений, поэтому нет необходимости использовать стереотип
Том Моррис
<<enumeration>>на самом деле это не стереотип, а ключевое слово. К сожалению, авторы UML не сделали никаких визуальных различий.
qwerty_so
74

Если ваш инструмент моделирования UML поддерживает указание перечисления, вы должны это использовать. Скорее всего, это будет проще сделать, и это придаст вашей модели более сильную семантику. Визуально результат будет очень похож на класс со <<enumeration>>стереотипом, но в метамодели UML перечисление фактически является отдельным (мета) типом.

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

После того, как он определен, вы можете использовать его как тип атрибута так же, как вы использовали бы тип данных или имя одного из ваших собственных классов.

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

Если вы используете ArgoEclipse или ArgoUML, на панели инструментов есть раскрывающееся меню, в котором можно выбрать тип данных, перечисление, сигнал и т. Д., Что позволит вам создавать свои собственные перечисления. Отсек, который обычно содержит атрибуты, может быть затем заполнен EnumerationLiterals для значений вашего перечисления.

Вот изображение немного другого примера в ArgoUML: введите описание изображения здесь

Том Моррис
источник
7
Спасибо за скриншот ArgoUML.
Петри Туононен
1

Обычно вы моделируете само перечисление как класс со enumстереотипом

аннаката
источник