рекомендуется делать ассоциации перечислять классы в диаграмме классов UML? - PullRequest
13 голосов
/ 15 сентября 2011

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

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

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

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

Заранее спасибо.

Ответы [ 2 ]

25 голосов
/ 15 сентября 2011

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

The two ways of representing attributes in UML

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

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

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

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

0 голосов
/ 15 сентября 2011

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

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

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

...