Как работает ограничение {XOR} в UML?

У меня есть некоторые сомнения относительно того, как правильно мы можем использовать ограничение {XOR} в UML.

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

Я понимаю, как это работает двумя разными способами. Который правильный?

  1. Ограничение xor применяется к ассоциации. (либо: объект типа A может быть связан с 1 объектом типа C; или: объект типа A может быть связан с нулем или 1 объектом типа B; или: объект A может быть сам по себе, потому что мы имеем [0..1] рядом с B).

  2. К ссылке применяется ограничение xor (либо: объект типа A должен быть связан ровно с одним объектом типа C; либо: объект типа A должен быть связан ровно с одним объектом типа B).

3 ответа

Решение

Это просто неправильно (или загадка). Вам нужен ровно один C быть связанным с A, Но тогда, из-за XOR вы не можете общаться B, Что означает: B отношение всегда 0 и вы могли бы также оставить это.

Возможно (!) Кто-то поставил множественность не на ту сторону. Если вы поменяете их местами, это будет иметь смысл. Если вы используете реальные имена, а не A, B, C, вы можете догадаться из контекста.

Вариант 2 требует кратности ровно одного рядом с B.

Вариант 1 подходит в следующих случаях:

  1. 1 возле A, 0..1 возле B
  2. 0..1 рядом с A, 0..1 рядом с B
  3. 0..1 рядом с А, 1 рядом с Б

xor — это логический оператор, который возвращает значение true только в том случае, если два его операнда — один true, а другой false. Нотация используется для указания того, что экземпляр базового класса должен участвовать ровно в одной из ассоциаций, сгруппированных ограничением {xor}. Ровно одна из ассоциаций всегда должна быть активной.

Другие вопросы по тегам