Две вещи:
- Разрешены ли общие агрегации?Согласно спецификации UML, да.
- Это полезно на практике?Обычно я бы сказал нет.
Я не фанат отношений агрегации UML.Хотя владение интуитивно привлекательно, оно слишком субъективно практически.Я не использую его, и, как правило, не рекомендую его использовать (хотя см. Сноску).Вместо этого сосредоточьтесь на важных вопросах:
- Что такое кардинальность?
- Что такое поведение создания / удаления?
- Почему существуют отношения?(т.е. какой бизнес-факт / правило захватывает отношения?
Все вышеперечисленное может быть сделано с прямыми ассоциациями. Если ответ (а) один-ко-многим, (б) конец «один»отвечает за создание / удаление конца 'many' и (с), который вы действительно хотите, затем использование объединения Composite. Однако агрегация, как правило, не улучшает читабельность модели, она добавляет путаницу и мешает выходу на поверхность базовых правил домена /требования.
hth.
сноска: существует один сценарий, в котором агрегация имеет четко определенную семантику и может быть полезной. В частности, если у вас рекурсивная связь, агрегация говорит о структуре результирующего объектаявляется ациклическим (то есть DAG). Недостатком является то, что относительно мало людей понимают, что это свойство - конечно, не эксперты в области бизнеса. Поэтому вам, как правило, приходится выделять в любом случае, например, в комментарии / ограничении.