Подтвердить что ты не робот

Рекомендуется ли создавать ассоциации для перечисления классов в диаграмме классов uml?

Я разрабатываю диаграмму классов, и у меня возникли сомнения:

У меня есть класс, который имеет несколько атрибутов, относящихся к перечислениям java и другим классам, которые будут отображаться как каталоги db.

Например, существует класс BankAccount, который имеет атрибут, называемый type: BankAccountType (enum), а другой - банк: Bank (класс каталога).

Можно ли отметить связь между классами, или это можно устранить? Если да, должны ли они быть агрегированы (у BankAccount есть свой тип bankAccountType) или просто связаны?

Спасибо заранее.

4b9b3361

Ответ 1

Независимо от того, является ли тип атрибута перечислением, есть два способа представления атрибутов в UML: как правильные атрибуты и как направленные ассоциации.

The two ways of representing attributes in UML

Два стиля объявлений атрибутов семантически эквивалентны: они означают одно и то же. Другими словами, тот, который вы выбираете, сводится к вопросу о стиле.

Использование атрибутов делает более простую диаграмму, и в некоторых инструментах требуется, чтобы атрибут был видимым в древовидной структуре модели.

Использование направленных ассоциаций означает, что вы должны включить в диаграмму целевой тип (перечисление), что означает, что вы можете увидеть литералы. Конечно, вы можете включить его и в другое дело, как я уже делал с An_Enum выше.

Я обычно не использую агрегации или композиции для моделирования на уровне кода; Я чувствую, что они лучше подходят для описания более абстрактных отношений между классами (как в информационной модели), и концептуально они на самом деле не соответствуют чему-либо в исходном коде. Атрибуты, возможно, дополняются отношениями "зависимость" или "использование" с классами, которые используются как локальные типы переменных или методы которых вызывается.

Ответ 2

Простая ассоциация сделала бы трюк. Агрегация показывает, что жизненный цикл содержащегося класса привязан к содержащему классу.

Из Википедии: Агрегация может возникать, когда класс является коллекцией или контейнером других классов, но там, где содержащиеся классы не имеют сильной зависимости жизненного цикла от контейнера - по существу, если контейнер уничтожен, его содержимое не является. http://en.wikipedia.org/wiki/Class_diagram#Aggregation

Кроме того, вы нашли это для вас: перечисление диаграммы классов UML