Можем ли мы добавить несколько связей между двумя классами в диаграмму классов?

#uml #class-diagram

Вопрос:

Если у меня есть два класса и между ними существуют два типа отношений-например, композиция и зависимость, — что нам делать? Добавляем ли мы два символа отношений между классами?

Пример: Предположим, что первый класс есть BookFestival , а другой класс есть Book . Book имеет метод регистрации на фестиваль:

  • 1-е отношение: композиция если нет книги, то нет и книжного фестиваля
  • 2-е отношение: Зависимость если мы изменим дату проведения фестиваля, это повлияет на класс книги

Ответ №1:

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

Возьмем, к примеру Book , и Author :

  • В книге может быть несколько авторов, и автор может написать/внести свой вклад в несколько книг. Это ассоциация «многие ко многим».
  • В то же время Book может быть проведена операция по добавлению Author в свой список. Таким образом, существует «use» зависимость от Book to Author .

Теоретически мы могли бы указать на эти две взаимосвязи. Однако, когда есть связь, мы предполагаем, что существует зависимость: даже без операции Book необходимо знать о ней Authors . На практике мы явно не указываем на такую неявную зависимость.

Возьмем в качестве еще одного примера Employee и Department :

  • У A Department есть несколько Employee , которые выполняют роль member департамента.
  • У Department А есть также тот Employee , который играет особую роль manager .

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

Последнее важное замечание: используйте состав редко. В вашем примере BookFestival книга не сделана из Books , а книги существуют без BookFestival нее . Кроме того, книги могут быть представлены на нескольких фестивалях. Это означает, что нет исключительного права собственности на книги по фестивалям и, следовательно, нет композиции. И наоборот, a Book не состоит из BookFestivals , и книжный фестиваль посвящен более чем одной книге. Это означает, что нет исключительного права собственности в противоположном направлении, следовательно, нет состава между ними.

Ответ №2:

Чтобы исправить ответ Кристофа:

например, состав и зависимость

В этом случае все просто: зависимость-это самая слабая связь между классами. Все, что сильнее, просто наследует зависимость. Поэтому, если у вас есть составная агрегация, она будет включать зависимость, и вам не нужно будет показывать ее снова. Вы могли бы это сделать, но это было бы просто бессмысленно.