Множественность агрегации UML

Я и мои коллеги не можем прийти к единому мнению. В UML, когда выполняется агрегация, имеет ли ромбовидная сторона кратность максимум 1 или может быть 0..* ? Или это зависит от точки зрения?
Заранее спасибо!


person DKF    schedule 18.12.2012    source источник


Ответы (2)


Во-первых, вам нужно уточнить, какой «ромб» вы имеете в виду под пустым ромбом в агрегации, а заполненный ромб — это композиция?

Если вы имеете в виду пустой алмаз, то Icepack верен, и вы путаете две разные вещи. Множественность не связана с Агрегацией, поэтому ромбовидный индикатор агрегации может иметь любую множественность по вашему желанию. не связаны.

Если вы имеете в виду заполненный ромб, то есть композицию, то пример, который кто-то опубликовал, на самом деле вам не поможет, поскольку он говорит: «Есть много факультетов, но only 1 университет (множественность)» и что «если удаляются все факультеты, то удаляется и Университет (состав)».

Я изо всех сил пытаюсь придумать хороший пример, где конец composition не будет 1 only и, насколько я могу думать, никогда не будет 0..*, поскольку у вас может быть класс, который должен удалить что-то, что не может быть когда-нибудь существовал? Однако я мог бы быть 1..*, т.е. многие ко многим, например, Экзамен и Экзаменационные вопросы.

Множественность может быть от 1..* до 1..*, т.е. в экзамене может быть 1 or more вопросов, а вопрос может находиться в 1 or more экзаменах. Закрашенный ромб (состав) в конце экзамена означает, что если все вопросы будут удалены, то все экзамены также будут удалены.

person Darren    schedule 26.09.2013

Да, это может быть 0..*. Хороший пример здесь: На кафедре несколько профессоров, и каждый профессор может принадлежать к нескольким кафедрам. в то же время.

person SomeWittyUsername    schedule 18.12.2012
comment
@sfinnie, вы можете использовать любые средства для представления такого рода отношений. я не знаю лучшего способа - person SomeWittyUsername; 18.12.2012
comment
это прямой двоичный код. Полый ромб не говорит вам ничего такого, чего не сказал бы прямой двоичный код. Это просто визуальный шум. - person sfinnie; 19.12.2012
comment
Но не верьте мне на слово: прочитайте этот вопрос (stackoverflow.com/questions/9640885/), чтобы узнать, что об этом говорит Джим Рамбо, соавтор UML. - person sfinnie; 19.12.2012
comment
не вижу никакого противоречия. агрегация добавляет детали. Вам решать, нужны вам эти детали или нет. кроме того, здесь речь идет не об агрегации, а о множественности конкретной стороны в отношении. ответ тот же для простой ассоциации - person SomeWittyUsername; 19.12.2012
comment
Не сказал, что есть противоречие. Я сказал, что была путаница. Тот факт, что исходный вопрос был задан, свидетельствует об этом. Моя точка зрения заключалась в том, что агрегация UML в том виде, в каком она определена в настоящее время, редко бывает полезной концепцией. Что касается добавления деталей, зависит от того, что вы подразумеваете под деталями. Единственная четко определенная семантика, которую он добавляет, — это рекурсивная ацикличность. В противном случае он не говорит ничего, чего не говорит прямой двоичный файл. А об ацикличности мало кто знает. Так что вы должны указать это явно в любом случае. [конец] - person sfinnie; 19.12.2012
comment
Конечно, у вас могут быть свои собственные соглашения по использованию агрегации: поэтому, когда вы видите агрегацию вместо двоичного файла, вы думаете: «А, хорошо, у него есть особое свойство xx». И это нормально, язык существует для того, чтобы его использовать. Я обнаружил, что это просто вызывает путаницу, поэтому не используйте его. YMMV. Я подозреваю, что мы уже отошли от темы для ОП, хотя... - person sfinnie; 19.12.2012
comment
@sfinnie Я рассматриваю агрегацию и композицию как дополнительную специализацию ассоциации. На более позднем этапе проектирования каждая ассоциация становится либо ассоциацией, либо композицией. В основном я использую отношение агрегации, чтобы показать, что это не композиция (и композиция аналогичным образом). Если это не важно для конкретной диаграммы, я опускаю это. Но на самом деле это не в тему... - person SomeWittyUsername; 19.12.2012