我对我们在 UML 中使用 {XOR} 约束的正确程度有一些疑问。
我理解它是如何以两种不同的方式工作的。哪一个是正确的?
xor 约束适用于关联。(或者:A 类型的对象可能与 C 类型的 1 个对象相关联;或者:A 类型的对象可能与 B 类型的零个或 1 个对象相关联;或者:对象 A 可以单独存在,因为我们有 [ 0..1] 靠近 B)。
xor 约束适用于链接(或者:A 类型的对象必须与 C 类型的一个对象关联;或者:A 类型的对象必须与 B 类型的一个对象关联)。
我对我们在 UML 中使用 {XOR} 约束的正确程度有一些疑问。
我理解它是如何以两种不同的方式工作的。哪一个是正确的?
xor 约束适用于关联。(或者:A 类型的对象可能与 C 类型的 1 个对象相关联;或者:A 类型的对象可能与 B 类型的零个或 1 个对象相关联;或者:对象 A 可以单独存在,因为我们有 [ 0..1] 靠近 B)。
xor 约束适用于链接(或者:A 类型的对象必须与 C 类型的一个对象关联;或者:A 类型的对象必须与 B 类型的一个对象关联)。
多年后,我必须解决这个答案(尽管我得到了很多支持)。
这{XOR}
意味着该类A
必须与B
或与C
但不与两者或都没有关联。这意味着在一种情况下你有A * - 0..1 B
,而在另一种情况下它是A 0..1 - 1 C
. 两者本身都是合法的结构。只有在这里,A
它将扮演两个独特的角色。
这是一个纯粹的学术结构,所以它在实践中的含义是完全开放的。如果教程/课程中的此类示例与现实世界有一些联系,那将更有意义(也更有帮助)。
旧(错误)答案
这完全是错误的(或谜题)。您只需要一个C
与A
. 但是,由于XOR
您可能无法关联B
。这意味着:B
关系总是存在的0
,你也可以离开它。
也许(!)有人把多样性放在了错误的一边。如果你交换它们,那将是有意义的。如果您使用真实姓名而不是 A、B、C,您可以从上下文中猜测。
选项 2 要求靠近 B 的多重性正好是一个。
选项 1 适用于以下情况:
xor 是一个布尔运算符,仅当它的两个操作数一个为真另一个为假时才给出真结果。该表示法用于指定基类的实例必须完全参与由 {xor} 约束组合在一起的关联之一。确切地说,其中一个关联必须始终处于活动状态。