2016-07-02 5 views
1

у меня есть два класса Person и Department с двумя ассоциациями между нимиSubset обозначения между ассоциациями классов UML диаграммы

  • works и
  • manages,

и между этими двумя ассоциациями есть {subset} (manages ассоциации являются подмножеством ассоциации works).

Что я должен делать с диаграммой объекта?

  1. Каждый Person, который является менеджером имеет две ссылки на его отдел (один для works и второй для manages) или
  2. каждый Person, который менеджер имеет только один ссылку на его отдел?

Кстати, кроме {subset}, {nand}, {and} и {xor}, есть ли другие ограничения обозначения, которые вы можете поместить в диаграмме классов?

+0

Добро пожаловать в StackOverflow, @tomiliJons. Если вы нашли ответ на свой вопрос , пожалуйста, рассмотрите [принятие it] (http://meta.stackexchange.com/q/5234/179419) (нажав на галочку ) и рассмотрите вопрос об увеличении (нажав стрелку вверх). Принимая ответ указывает более широкой общине, что у вас есть , нашел какое-то решение, дал себе некоторые очки в рейтингах и дает репутацию, на которую отвечает ваш вопрос. Если вы не нашли удовлетворительного ответа на свой вопрос, пожалуйста, Оставьте комментарий. –

ответ

0

Поскольку вы определили две ассоциации, объекты будут иметь две ссылки. Просто как тот. Вы можете добавить примечание, что works является избыточным, если manages имеет ненулевую множественность (так как он будет иметь один из 0..1).

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

надструктуры 2,5 состояний на стр.111:

<prop-modifier> указывает на то модификатор, который относится к собственности.

<prop-modifier> ::= ‘readOnly’ | ‘union’ | ‘subsets’ <property-name> | ‘redefines’ <property-name> | ‘ordered’ | ‘unordered’ | ‘unique’ | ‘nonunique’ | ‘seq’ | ‘sequence’ | ‘id’ | <prop-constraint>

+0

спасибо, но в чем смысл {подмножества} в этом случае? он пытается сказать, что управление связью между двумя объектами подразумевает, что между ними есть связь между рабочими? (учтите, что существует 0 .. * кратностей на каждом конце ассоциации). – tomiliJons

+0

Если кто-то ассоциируется. 'A' устанавливает подмножество. 'B' (который имеет множественность), тогда он может содержать только те, которые находятся в' B'. Поэтому 'manage' должен быть одним из' works'. –

+0

«он пытается сказать, что управление связью между двумя объектами подразумевает также связь между рабочими?» - Да, это именно то, что он говорит. – Ister

0

Обратите внимание, что subsets ограничение может быть определена между концами ассоциации (ссылки) Недвижимость Болгария Недвижимость, но не между ассоциациями. Итак, ваш вопрос должен быть лучше сформулирован следующим образом. Учитывая класс Person с двумя опорными Недвижимость Болгария Недвижимость managedDepartment и department, представляющих соответствующие функциональные ассоциации между Person и Department, ограничение

managedDepartment subsets department 

следует, что для любого лица объекта p, множество департаментов управляться р является подмножеством или eqal к множеству отделов p. Это формализует бизнес-правило, что человек может быть только менеджером отдела, в котором он работает. Символично,

p.managedDepartment subseteq p.department 

В качестве альтернативы можно было бы определить, что manages объединение специализируется на worksAt ассоциацию, которая будет означать, что для любого manages звена имеется соответствующая worksAt ссылка.

0

Это лучший вопрос, который я видел через некоторое время! Для того, чтобы ответить на ваши два вопроса непосредственно:

  • Да, с помощью Personmanages {subsets works for}Department, каждый Person, который менеджер будет иметь две ссылки на Department: один для works for и один для manages.
  • Другим полезным ограничением, которое вы можете использовать для свойства в диаграмме классов, является {redefines}.

Переопределение свойства позволяет вам изменить имя свойства и затянуть ограничения в контексте своего класса-владельца (и в контексте подклассов). Например, вы можете сказать следующие вещи:

  • В общем, Deckcontains 0..52 Cards
  • Подкласс Deck называется Monster Deck только contains {redefines contains} 0..10 Monster Cards
  • Другой подкласс Deck называется Player Deck только contains {redefines contains} 0..10 Player Cards
  • И так далее ..

Это очень удобно для выражения требований и бизнес-правил.

 Смежные вопросы

  • Нет связанных вопросов^_^