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

Общий раздел => ПО Аналитика => Sparx => Тема начата: Galogen от 21 Февраля 2010, 19:43:08

Название: Агрегация против агрегированной ассоциации
Отправлено: Galogen от 21 Февраля 2010, 19:43:08
На форуме EA разгорелась не шуточная дискуссия. Некто Paolo F Cantoni открыл явный семантический баг ЕА. Дискуссий много, но итог ее как я понял автор подводит здесь: Aggregation and Association proposa (http://www.sparxsystems.com/cgi-bin/yabb/YaBB.cgi?num=1265070087)

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

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

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

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

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

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

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

Интересно зачем ЕА допускает такие ляпы? Причем явно сознательно
Название: Re: Агрегация против агрегированной ассоциации
Отправлено: bas от 24 Февраля 2010, 16:06:00
Да, я тоже с чем-то подобным сталкивался в ЕА. Предпочитаю сделать ассоциацию, а потом из нее агрегацию или композицию.

А почему "явно сознательно"?
Название: Re: Агрегация против агрегированной ассоциации
Отправлено: Galogen от 24 Февраля 2010, 18:38:27
Да, я тоже с чем-то подобным сталкивался в ЕА. Предпочитаю сделать ассоциацию, а потом из нее агрегацию или композицию.
Этот путь как раз содержит потенциальные проблемы. Получается, что лучше использовать явную агрегацию (кстати в VP тоже так же сделано, т.е. прямо есть в панели инстремнтов агрегация и ассоциация)
Название: Re: Агрегация против агрегированной ассоциации
Отправлено: Galogen от 24 Февраля 2010, 20:19:49
Забавно. В VP сделано вообще еще хуже.

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

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

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

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

По карйней мере VP последователен и у него только ассоциация реально. в ЕА есть и другой класс связи, отличный как я понимаю от UML стандарта
Название: Re: Агрегация против агрегированной ассоциации
Отправлено: [прилетело НЛО и...] от 14 Сентября 2017, 22:34:36
Спустя 7 лет VP позволяет двуромбовые композиции. Полёт нормальный.)
Название: Re: Агрегация против агрегированной ассоциации
Отправлено: Galogen от 15 Сентября 2017, 22:49:13
Спустя 7 лет VP позволяет двуромбовые композиции. Полёт нормальный.)

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