Помогают быстро устранить путаницу в UML

#uml #associations #aggregation #class-diagram

#uml #ассоциации #агрегирование #диаграмма классов

Вопрос:

Я хочу знать, что было бы, если бы у меня был билет, содержащий один TicketType, но тип билета может быть частью многих билетов.

Будет ли связь агрегированной, где открытый бриллиант находится в классе Ticket, или это ассоциация, где стрелка указывает на TicketType?

Ответ №1:

Моей первой мыслью было «Кого это волнует?» Вы пытаетесь выразить взаимосвязь между двумя объектами для себя или других разработчиков. Вы даже не можете четко сформулировать разницу; каковы шансы, что другие смогут это сделать?

Ассоциация с open diamond указывает, что Тикету принадлежит TicketType, но тип не удаляется, если тикет удаляется.

Я не уверен, какую дополнительную информацию это предоставляет сверх простой стрелки для ассоциации.

Я думаю, важно не слишком зацикливаться на этих вещах. Не слишком увлекайтесь UML.

Комментарии:

1. Хорошо, спасибо, имеет смысл, что если тикет удален, типы тикетов все еще существуют, которые должны быть.

2. 1 @duffymo. Ассоциация агрегации UML вызывает больше путаницы, чем того стоит. Важными вопросами являются количество элементов (должно ли быть хотя бы одно? Может ли их быть больше одного?) и поведение при удалении. Мой совет всегда заключался бы в том, чтобы сначала ответить на эти вопросы — и придерживаться простой двоичной ассоциации. Агрегирование имеет только одно полезное свойство, и оно встречается только в рекурсивных агрегатах.

3. Спасибо за совет, sfinnie. Я думаю, что мой ответ вполне адекватен в его нынешнем виде. Возможно, вас смущает агрегация; я нет. Вы, конечно, можете предложить свои собственные.

4. Моим намерением было согласиться с вами, а не давать вам советы. Следовательно 1. Совет — если таковой и был — был для OP. А именно, не зацикливайтесь на агрегировании. Сосредоточьтесь на двух важных вопросах (количество элементов поведение при удалении).