Как работает ограничение {XOR} в UML?
У меня есть некоторые сомнения относительно того, как правильно мы можем использовать ограничение {XOR} в UML.
Я понимаю, как это работает двумя разными способами. Который правильный?
Ограничение xor применяется к ассоциации. (либо: объект типа A может быть связан с 1 объектом типа C; или: объект типа A может быть связан с нулем или 1 объектом типа B; или: объект A может быть сам по себе, потому что мы имеем [0..1] рядом с B).
К ссылке применяется ограничение xor (либо: объект типа A должен быть связан ровно с одним объектом типа C; либо: объект типа A должен быть связан ровно с одним объектом типа B).
3 ответа
Это просто неправильно (или загадка). Вам нужен ровно один C
быть связанным с A
, Но тогда, из-за XOR
вы не можете общаться B
, Что означает: B
отношение всегда 0
и вы могли бы также оставить это.
Возможно (!) Кто-то поставил множественность не на ту сторону. Если вы поменяете их местами, это будет иметь смысл. Если вы используете реальные имена, а не A, B, C, вы можете догадаться из контекста.
Вариант 2 требует кратности ровно одного рядом с B.
Вариант 1 подходит в следующих случаях:
- 1 возле A, 0..1 возле B
- 0..1 рядом с A, 0..1 рядом с B
- 0..1 рядом с А, 1 рядом с Б
xor — это логический оператор, который возвращает значение true только в том случае, если два его операнда — один true, а другой false. Нотация используется для указания того, что экземпляр базового класса должен участвовать ровно в одной из ассоциаций, сгруппированных ограничением {xor}. Ровно одна из ассоциаций всегда должна быть активной.