Подтвердить что ты не робот

Что означает знак алмаза в диаграммах классов UML?

Рассмотрим две нижеприведенные диаграммы. Верхний содержит простую стрелку на правом конце, а нижний содержит стрелку с ромбом на левом конце и простую стрелку на правом конце. В великой книге GoF используются оба этих типа диаграмм.

Я хочу понять, что означает алмаз во втором случае, и какой из этих двух дает более тесную связь между Customer и Order.

Отвечает ли класс Customer за жизненный цикл класса Order в любом из двух случаев?

enter image description hereenter image description here

4b9b3361

Ответ 1

Если нет бриллианта, то у нас простая связь.

Если алмаз оставлен пустым, это означает, что он является агрегатом. Это отношение сильнее, чем простая ассоциация. В этом случае Клиент объединяет Заказы.

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

Я думаю, что это объясняется немного более четко:

Ответ 2

Клиент и заказ - это отношения "есть-а", потому что, если клиент перестает существовать, он делает свой заказ. Следовательно, существует зависимость жизненного цикла между контейнером (клиентом) и экземплярами внутри этого контейнера (порядок). Когда контейнер перестает существовать, все его экземпляры.

С другой стороны, если мы говорим, что у клиента есть книга. В этом случае мы имеем отношение "has-a". Потому что, если клиент перестает существовать, книга по-прежнему доступна.

Ответ 3

Это означает агрегацию. Из Википедии:

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

http://en.wikipedia.org/wiki/Class_diagram