Форум Сообщества Аналитиков

×


Агрегация против агрегированной ассоциации(Прочитано 8574 раз)
На форуме EA разгорелась не шуточная дискуссия. Некто Paolo F Cantoni открыл явный семантический баг ЕА. Дискуссий много, но итог ее как я понял автор подводит здесь: Aggregation and Association proposa

Кому сложно читать по-английски, перескажу кратко содержание и интригу.

Откройте ЕА. Создайте диаграмму классов. Добавьте пару классов. Начинаем.

Найдите среди Class Relationships отношение Assosiate - нарисуйте тот час.

Теперь найдите там же Aggregate - нарисуйте тот час.

Разница видна невооруженным глазом: на конце агрегации - полый ромб.

Войдите в свойства ассоциации!!! например Source role найдите Aggregation и выставите значение share, а теперь то же самое сделайте с Target role. Вы удивлены, поражены. А попробуйте один конец сделать share, а другой compose.

А теперь войдите в свойства агрегации (обратите внимание - даже объект называется иначе). Попробуйте убрать ромбик - не вышло!!!
А попробуйте поставить свойства Агрегации для обеих ролей например share - не получается? Ромбик прыгает туда сюда. Вы огорчились? Напрасно, не стоит расстраиваться, в этом случае это куда больше походит на правду!

Интересно зачем ЕА допускает такие ляпы? Причем явно сознательно



Да, я тоже с чем-то подобным сталкивался в ЕА. Предпочитаю сделать ассоциацию, а потом из нее агрегацию или композицию.

А почему "явно сознательно"?
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



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



Забавно. В VP сделано вообще еще хуже.

Там есть ассоциация, агрегация и композиция. Вроде три разных вида связи.

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

Возьмем два класса и наведем между ними агрегацию. Теперь возмьмем противоположный конец и зададим ему aggregation kind. Нет проблем.

Т.е. если в ЕА все-таки агрегация и композиция имеют ограничения по числу агрегированных концов, то в VP это ничем не отличается.

По карйней мере VP последователен и у него только ассоциация реально. в ЕА есть и другой класс связи, отличный как я понимаю от UML стандарта



Спустя 7 лет VP позволяет двуромбовые композиции. Полёт нормальный.)
[...и улетело НЛО.]



Спустя 7 лет VP позволяет двуромбовые композиции. Полёт нормальный.)

ЕА не позволяет, ну а VP чего же мелочиться-то, свобода во всем




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19