Зависимость UML или ассоциация в диаграмме классов

У меня есть класс Controller в моем проекте Java, который имеет такой метод:

введите здесь описание изображения

Как видите, в первой строке я получаю экземпляр Singleton класса ActualModes и вызываю метод getActualModes().

Итак, первый вопрос заключается в том, какое отношение я должен использовать в диаграмме классов.

После этого я создаю новый экземпляр класса ModeContext, а затем вызываю метод executeStrategy. В этом случае какие отношения лучше?


person M. Barabas    schedule 04.05.2019    source источник
comment
Никакой связи не существует после возврата метода, так что это не ассоциация.   -  person Jim L.    schedule 04.05.2019
comment
@М. Барабас: Пожалуйста, отметьте один ответ как принятый, если вы удовлетворены, или объясните, почему вы не удовлетворены.   -  person www.admiraalit.nl    schedule 07.05.2019


Ответы (2)


Это должно быть так:

введите здесь описание изображения

Доступ к синглтону (обратите внимание на стереотип, который просто удобен и не является обязательным или общим стандартом) является анонимным, поэтому у вас просто есть зависимость. ModeContext, напротив, использует частное (я не знаю правил области видимости используемого вами языка, поэтому я сделал его частным) свойство под названием context. Обратите внимание на точку, которая говорит именно об этом.

person qwerty_so    schedule 05.05.2019

Отказ от ответственности: UML не определяет сопоставление между Java и UML, поэтому каждый ответ на ваш вопрос открыт для обсуждения.

Я думаю, что оба отношения являются зависимостями, нарисованными пунктирными стрелками от Controller до ActualModes и от Controller до ModeContext. Определение «зависимости» в соответствии со спецификацией UML 2.5 (§7.8.4.1):

Зависимость — это Отношение, которое означает, что один Элемент модели или набор Элементов модели требуют других Элементов модели для их спецификации или реализации.

Примером типа отношений, который, на мой взгляд, менее подходит, является ассоциация, хотя ее определение (§11.5) довольно широкое:

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

Можно утверждать, что между Controller и двумя другими классами существуют связи в виде переменных, но эти переменные являются локальными переменными метода, которые существуют только временно во время выполнения метода. Ассоциации представляют собой более прочные связи, например. члены класса - насколько я понимаю UML и насколько я видел используемые на практике ассоциации.

person www.admiraalit.nl    schedule 05.05.2019