UML 中的 {XOR} 约束如何工作?

DM1*_*M14 6 uml class-diagram object-diagram

我对在 UML 中如何正确使用 {XOR} 约束有一些疑问。

在此处输入图片说明

我理解它是如何以两种不同的方式工作的。哪一个是正确的?

  1. xor 约束适用于关联。(或者:类型 A 的对象可能与类型 C 的 1 个对象相关联;或者:类型 A 的对象可能与类型 B 的零个或 1 个对象相关联;或者:对象 A 可以单独存在,因为我们有 [ 0..1] 靠近 B)。

  2. xor 约束适用于链接(或者:类型 A 的对象必须与类型 C 的对象正好关联;或者:类型 A 的对象必须与类型 B 的对象正好关联)。

qwe*_*_so 5

多年后我必须修复这个答案(尽管我得到了很多赞成)。

{XOR}意味着该类A必须与 或 有关联BC但不能与两者都有关联,或者没有。这意味着在一种情况下你有,A * - 0..1 B而在另一种情况下它是A 0..1 - 1 C. 两者本身都是法律结构。只有在这里它A才会扮演两个独特的角色。

这是一个纯粹的学术结构,因此它在实践中的含义是完全开放的。如果来自教程/课程的此类示例具有一些现实世界的联系,那将更有意义(也更有帮助)。


旧(错误)答案

这完全是错误的(或谜题)。您只需要一个CA. 但是,由于XOR您可能无法关联B。这意味着:这种B关系始终存在0,您也可以将其搁置一旁。

也许(!)有人把多样性放在了错误的一边。如果你交换它们,这将是有意义的。如果您使用真实姓名而不是 A、B、C,您可以从上下文中猜测。