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