Состав и агрегация в диаграмме классов - PullRequest
5 голосов
/ 10 ноября 2011

Мне трудно понять их, когда речь заходит о разработке диаграммы классов. Из того, что я знаю, композиция - это отношение "есть", но агрегация ?? Я понятия не имею, что это. и одно, когда я узнаю, как использовать Composition в диаграмме классов? и когда я узнаю, как использовать агрегацию в диаграмме классов? пример будет высоко оценен.

Ответы [ 2 ]

22 голосов
/ 10 ноября 2011

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

Агрегации "has-a" относятся к "слабому типу". Слабое значение означает, что связанные компоненты агрегатора могут пережить жизненный цикл агрегатов или могут быть доступны другим способом. Простым примером будет футбольный клуб с его членами. Если клуб распущен, у вас все еще есть члены, которые на самом деле могут быть членами других клубов и, таким образом, остаются в живых.

Композиция "has-a" относится к "сильному типу". Сильный смысл, что одно не может существовать без другого. Жизненные циклы компонента напрямую связаны с «родителем». Примером может служить дом с комнатами. Если вы решите снести дом, вы также потеряете свои комнаты.

Может быть, немного абстрактно, но я думаю, что в этом вся идея.

0 голосов
/ 10 ноября 2011

См. Ответы на предыдущие вопросы здесь , здесь и здесь .

Лично я не использую Агрегацию.Семантика слишком слаба, чтобы быть полезной.Это вызывает больше проблем, чем решает.Есть только одно место, где оно имеет четко определенные и потенциально полезные свойства, которые отличают его от простой бинарной ассоциации (см. Сноску).

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

hth.

Сноска.Агрегация может быть применима, если вам нужно смоделировать рекурсивное древовидное отношение, например, часть, рекурсивно разложенную на части.Агрегация говорит, что не может быть циклических отношений, то есть часть не может быть частью себя - прямо или косвенно.Однако большинство людей, читающих модель, вряд ли знают это.-Так что вам нужно добавить комментарий.Это означает, что вам следует придерживаться бинарной ассоциации и избежать путаницы при использовании агрегации.

...