Форум Сообщества Аналитиков
Общий раздел => ПО Аналитика => Sparx => Тема начата: 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 - не получается? Ромбик прыгает туда сюда. Вы огорчились? Напрасно, не стоит расстраиваться, в этом случае это куда больше походит на правду!
Интересно зачем ЕА допускает такие ляпы? Причем явно сознательно
-
Да, я тоже с чем-то подобным сталкивался в ЕА. Предпочитаю сделать ассоциацию, а потом из нее агрегацию или композицию.
А почему "явно сознательно"?
-
Да, я тоже с чем-то подобным сталкивался в ЕА. Предпочитаю сделать ассоциацию, а потом из нее агрегацию или композицию.
Этот путь как раз содержит потенциальные проблемы. Получается, что лучше использовать явную агрегацию (кстати в VP тоже так же сделано, т.е. прямо есть в панели инстремнтов агрегация и ассоциация)
-
Забавно. В VP сделано вообще еще хуже.
Там есть ассоциация, агрегация и композиция. Вроде три разных вида связи.
Однако. Создадим ассоциацию между двумя классами. Свойство aggregation kind доступно по правой кнопке. Выбрать можно что угода и с обоих концов будет агрегация или композиция.
Возьмем два класса и наведем между ними агрегацию. Теперь возмьмем противоположный конец и зададим ему aggregation kind. Нет проблем.
Т.е. если в ЕА все-таки агрегация и композиция имеют ограничения по числу агрегированных концов, то в VP это ничем не отличается.
По карйней мере VP последователен и у него только ассоциация реально. в ЕА есть и другой класс связи, отличный как я понимаю от UML стандарта
-
Спустя 7 лет VP позволяет двуромбовые композиции. Полёт нормальный.)
-
Спустя 7 лет VP позволяет двуромбовые композиции. Полёт нормальный.)
ЕА не позволяет, ну а VP чего же мелочиться-то, свобода во всем