Как ориентированные ассоциации работают в унаследованных классах? (диаграмма классов uml) - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь понять один из вопросов теста uml. Ассоциации различаются между базовыми и унаследованными классами, но наследуемые классы также наследуют связь между базовыми классами, я имею в виду, действительно ли у наследственных классов есть две ассоциации?

enter image description here

У меня также есть разные утверждения, из которых мне нужно выбрать правильное. Правильный ответ - А, но я не понимаю, почему А верен, а другие нет, поэтому, если это возможно, объясните каждое утверждение.

A) Экземпляр класса ConcreteSubject может иметь ссылку на ноль или более объектов типа Observer.

B) Каждый экземпляр класса Observer имеет ссылку только на один экземпляр класса Subject.

C) Каждый экземпляр класса Subject имеет ссылку только на один экземпляр класса Observer.

D) Экземпляр класса ConcreteSubject не может иметь ссылки на экземпляр любого другого класса.

E) Экземпляр класса ConcreteObserver может иметь ссылку на ноль или более экземпляров класса ConcreteSubject.

Спасибо!

1 Ответ

2 голосов
/ 10 мая 2019

[Надеемся, что этот вопрос и ответ создает некоторое давление на юных учителей, чтобы они заботились о качестве своих вопросов к экзамену / викторине.]

Во-первых, важно отметить, что диаграмма классов имеет несколько недостатков.Имена ролей «субъект» и «объект» находятся на неправильном (противоположном) конце ассоциации.Затем, как вы уже задавались вопросом, ассоциация субъект-объект дублируется, поскольку она наследуется.

Что касается вопросов, оба ответа A и B верны, а все остальные неправильны.Это непосредственно следует из чтения ограничений множественности ассоциации субъект-объект «один-ко-многим».

Кстати, формулировка вариантов ответа B и C является своего рода некорректной: может быть странно говорить «каждый экземпляр»класса Observer (или Subject) ", поскольку эти классы являются абстрактными (визуализируются именами курсивом), что означает, что они не имеют своих собственных (прямых) экземпляров.Однако в общем смысле можно сказать, что у них есть экземпляры, а именно все экземпляры их конкретных подклассов.Поэтому эти два варианта ответа сбивают с толку.Но для любого вида экзаменов важно не допускать запутанных вопросов.

Полагаю, ваш учитель считает ответ B неправильным, поскольку речь идет об экземплярах абстрактных классов Observer и Subject.Однако в его нынешнем виде ответ B является правильным.Это будет неверно только в том случае, если его перефразировать как «каждый прямой экземпляр класса Observer (или Subject)».

Ответ C неверен, посколькуЭкземпляр класса Subject может не иметь связи с каким-либо Наблюдателем (это подразумевается 0 в выражении множественности 0..*).

Ответ D неверен, поскольку модель не содержит такого ограничения (которое,Кстати, не имеет никакого смысла).

Ответ E является неправильным, поскольку он противоречит ограничению множественности, что любой наблюдатель должен наблюдать точно один субъект, выраженный выражением множественности 1.

...