Ответ 1
Независимо от того, является ли тип атрибута перечислением, есть два способа представления атрибутов в UML: как правильные атрибуты и как направленные ассоциации.
Два стиля объявлений атрибутов семантически эквивалентны: они означают одно и то же. Другими словами, тот, который вы выбираете, сводится к вопросу о стиле.
Использование атрибутов делает более простую диаграмму, и в некоторых инструментах требуется, чтобы атрибут был видимым в древовидной структуре модели.
Использование направленных ассоциаций означает, что вы должны включить в диаграмму целевой тип (перечисление), что означает, что вы можете увидеть литералы. Конечно, вы можете включить его и в другое дело, как я уже делал с An_Enum выше.
Я обычно не использую агрегации или композиции для моделирования на уровне кода; Я чувствую, что они лучше подходят для описания более абстрактных отношений между классами (как в информационной модели), и концептуально они на самом деле не соответствуют чему-либо в исходном коде. Атрибуты, возможно, дополняются отношениями "зависимость" или "использование" с классами, которые используются как локальные типы переменных или методы которых вызывается.