UML-зависимость или ассоциация в диаграмме классов - PullRequest
0 голосов
/ 04 мая 2019

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

enter image description here

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

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

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

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Должно быть так:

enter image description here

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

0 голосов
/ 05 мая 2019

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

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

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

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

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

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

...