Как изобразить связь «класс использует класс» с помощью UML

#uml #class-relationship

#uml #класс-связь

Вопрос:

Случай A Допустим, у вас есть 2 класса Model и Settings .

Настройки не содержат ничего, кроме public static констант, используемых во всем приложении. Какой тип связи, по вашему мнению, имеют эти 2 класса?

Пример B Допустим, у вас есть IntersectionManager singleton класс, который используется классами, Road и Car для извлечения из него некоторых данных.

Как называется связь «класс использует класс» в UML?

Использовали бы вы одинаковые отношения как для случая A, так и для случая B? Какую стрелку UML вы бы использовали, чтобы продемонстрировать эту связь?

Ответ №1:

Ну, вы могли бы использовать связь «использует» (пунктирная линия, стрелка открытия). Я нашел хороший и полезный обзор на https://web.archive.org/web/20180722012752/http://usna86-techbits.blogspot.com/2012/11/uml-class-diagram-relationships.html

Ответ №2:

Обычная черная и сплошная ассоциативная линия в обоих случаях. Необязательно со стрелками на одном или обоих концах, чтобы проиллюстрировать направление использования.

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

1. Зависит от вашей реализации и от того, кто кем владеет, я думаю. Возможно, вы правы, но зачем спрашивать, если вы уже знаете ответ?

2. Я этого не сделал, когда был задан вопрос. Google был достаточно любезен, чтобы помочь. Не могли бы вы добавить немного больше о том, «кто кем владеет» и насколько это важно, пожалуйста?

3. Обычно действительно сложно поместить все отдельные стороны структуры класса / объекта в одну диаграмму UML, такие как владения, способы использования, отношения классов, объектные отношения, количество объектов и т.д.

4. достаточно справедливо 🙂 Кто кому принадлежит, означает, какой класс имеет какой другой класс в качестве атрибута-члена. Как отдельный атрибут, массив и т.д. Или это также может означать, какой объект имеет какой другой объект в атрибуте member.

5. На самом деле, теперь, когда я думаю больше.. В обоих случаях статические классы используются из обычных классов / объектов (одноэлементный объект, полученный с помощью статического вызова функции). Тогда тип зависимости звучал бы более выполнимо. Мой поспешный ответ отразил мой опыт, поскольку обычно требуется слишком много времени, чтобы попытаться создать идеальную модель. Таким образом, я просто использую обычные ассоциативные линии / стрелки для моделирования того, что я делаю дальше, и покончу с этим. Как я уже говорил, UML плохо подходит при попытке смоделировать все на одной диаграмме. В итоге вы либо будете разочарованы, либо получите множество диаграмм об одном и том же случае с разных точек зрения.