UML 中的模型 "A car has to be owned by either a person or a company"
Model "A car has to be owned by either a person or a company" in UML
我们将至少有三个 UML 框:Company、Car、Person。
人可以属于公司,汽车必须由人或公司拥有,但绝不能由其中 none 个拥有。
这在 UML 中可行吗?问题在于多重性。
“?”中应该出现什么?斑点,还是应该以某种不同的方式建模?
是的。您可以将其建模为异或约束。
向您显示 xor link 两个关联,虚线上面有一个 {xor}
。请注意,它必须在大括号中,因为它表示约束。作为替代方案(如果您的建模工具不支持此表示法),您可以为两个关联创建一个注释 linked,其中包含一个 {xor}
语句。
在这两种情况下,Company/Person 侧的两个关联都需要 0..1
多重性。
当然,如果您可能有多个所有者,并且所有者可能都是个人或公司或两者兼而有之,您将使用 {or}
运算符和多重性 0..n
.
您可以在规范第 7.6.5 节、图 7.16 第 37 页或 here(您还可以找到其他参考资料)中阅读更多相关信息。
我们将至少有三个 UML 框:Company、Car、Person。
人可以属于公司,汽车必须由人或公司拥有,但绝不能由其中 none 个拥有。
这在 UML 中可行吗?问题在于多重性。
“?”中应该出现什么?斑点,还是应该以某种不同的方式建模?
是的。您可以将其建模为异或约束。
向您显示 xor link 两个关联,虚线上面有一个 {xor}
。请注意,它必须在大括号中,因为它表示约束。作为替代方案(如果您的建模工具不支持此表示法),您可以为两个关联创建一个注释 linked,其中包含一个 {xor}
语句。
在这两种情况下,Company/Person 侧的两个关联都需要 0..1
多重性。
当然,如果您可能有多个所有者,并且所有者可能都是个人或公司或两者兼而有之,您将使用 {or}
运算符和多重性 0..n
.
您可以在规范第 7.6.5 节、图 7.16 第 37 页或 here(您还可以找到其他参考资料)中阅读更多相关信息。