Как *действительно* написать мощность UML?

Я хотел бы раз и навсегда узнать, как писать мощности UML, так как мне очень часто приходилось спорить о них (так что доказательства и источники очень приветствуются :)

Если я хочу объяснить, что у Mother может быть несколько Children, но у Child есть один и только один Mother, мне следует написать:

Mother * ---------- 1 Child

Or

Mother 1 ---------- * Child

?


person sp00m    schedule 18.07.2013    source источник
comment
Если вы уже знакомы с нотацией Merise, UML делает все наоборот для мощностей. Следовательно, ваш первый пример будет правильным на диаграмме Меризе.   -  person Attila    schedule 19.06.2015


Ответы (3)


второй Мать 1 ------------------ 1..* Ребенок

Вы найдете множество примеров в спецификации UML для всех рисунков, связанных с абстрактным синтаксисом...

person Red Beard    schedule 18.07.2013

Конечно Рыжая Борода прав, правильный ответ второй.

Что касается подсказки для запоминания этого, советую думать по-английски: вы говорите «У ребенка ОДНА мать», а в этом предложении, как и в UML, пишется ОДНА рядом с Матерью. Довольно простой.

person Steph    schedule 18.07.2013
comment
Хороший способ запомнить это :+1: - person DBX12; 15.11.2018

У многих людей возникает этот вопрос, когда они начинают использовать UML, особенно когда они исходят из другой нотации, где имена всегда читаются по часовой стрелке, независимо от того, на каком конце строки они находятся. Это действительно сбивает с толку!

Red Beard прав, хотя спецификация UML явно не указывает, где записывается информация об окончании ассоциации (т. е. имя и множественность), она подразумевает это в нескольких местах. Например, рисунки 7.11 (показывающие атрибуты) и 7.12 (показывающие однонаправленные ассоциации с концами ассоциации рядом со стрелками) являются эквивалентными обозначениями свойств; таким образом, множественность действительно следует за типом свойства.

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

Кстати, вы должны использовать описательные конечные имена ассоциации. Они часто превращаются в имена атрибутов в Java, имена элементов в XSD и так далее. Например, в Java класс Mother может иметь атрибут «дети» типа «Set‹Child›». Если вы не назовете их, вы часто будете получать нежелательные имена по умолчанию.

person Jim L.    schedule 18.07.2013