UML MultiplicityElements 中的多个值范围
UML multiple ranges of values in MultiplicityElements
根据 UML 规范,在 MultiplicityElements 中指定多个值范围是否正确?例如,AssociationEnd 的两个范围:3..7、10..20 或一个属性,例如。 account:Account[0..5,8..10]。流行的工具允许这样做。正确吗?
一个MultiplicityElement
只能有一个multiplicity range.
我不清楚一个 umlDiagramElement
是否可以关联更多的多重元素。 Specification 2.5 似乎允许第 B.8.15.1
章
TLDR:不,这种多重性是不正确的。
完整答案
UML 2.5 规范的第 7.5.2 节和第 7.5.3.2 节明确定义了多重性在 MultiplicityElement 中定义为两个数字之间的范围,一个特定的数字(如果 upper
和 lower
是等于)或从数字到无穷大的范围,如果 upper
数字是 *
。不幸的是,您不能只列出具体的值。更具体地说,它由定义多重性范围限制的两个数字 lower
和 upper
列出。
我记得它在一些早期版本的 UML 中是可能的,但是我只在一些书中看到过它(不幸的是我记不清楚了),而不是规范本身。
至于 B.8.15.1,它没有说明可能的值,尤其是没有建议列出多个 values/ranges.
的可能性
因此可能的值为:
a
a..b
(其中 a
<= b
,如果 a
= b
那么它等同于 a
)
*
a..*
(如果a
= 0
那么它等价于*
)
a
和 b
都可以是计算结果为大于或等于 0
的自然数的表达式,前提是 a
<= b
用于表达式的所有可能值。
当然,对于内联多重性,它们放在方括号中。
另一方面,根据 9.4.2 StructuralFeatures and Parameters 是 MultiplicityElements,因此它们恰好具有一个多重性。
尽管在语法上不允许使用该符号,但您可能希望指定集合。这可以通过附加约束轻松完成。如果您头脑清醒,您可以构建一个 OCL 脚本。但是像 { multiplicity must be within range 0..5 and 8..10 }
这样的明文就可以了。只需使用 *
即可获得真正的多重性。
根据 UML 规范,在 MultiplicityElements 中指定多个值范围是否正确?例如,AssociationEnd 的两个范围:3..7、10..20 或一个属性,例如。 account:Account[0..5,8..10]。流行的工具允许这样做。正确吗?
一个MultiplicityElement
只能有一个multiplicity range.
我不清楚一个 umlDiagramElement
是否可以关联更多的多重元素。 Specification 2.5 似乎允许第 B.8.15.1
TLDR:不,这种多重性是不正确的。
完整答案
UML 2.5 规范的第 7.5.2 节和第 7.5.3.2 节明确定义了多重性在 MultiplicityElement 中定义为两个数字之间的范围,一个特定的数字(如果 upper
和 lower
是等于)或从数字到无穷大的范围,如果 upper
数字是 *
。不幸的是,您不能只列出具体的值。更具体地说,它由定义多重性范围限制的两个数字 lower
和 upper
列出。
我记得它在一些早期版本的 UML 中是可能的,但是我只在一些书中看到过它(不幸的是我记不清楚了),而不是规范本身。
至于 B.8.15.1,它没有说明可能的值,尤其是没有建议列出多个 values/ranges.
的可能性因此可能的值为:
a
a..b
(其中a
<=b
,如果a
=b
那么它等同于a
)*
a..*
(如果a
=0
那么它等价于*
)
a
和 b
都可以是计算结果为大于或等于 0
的自然数的表达式,前提是 a
<= b
用于表达式的所有可能值。
当然,对于内联多重性,它们放在方括号中。
另一方面,根据 9.4.2 StructuralFeatures and Parameters 是 MultiplicityElements,因此它们恰好具有一个多重性。
尽管在语法上不允许使用该符号,但您可能希望指定集合。这可以通过附加约束轻松完成。如果您头脑清醒,您可以构建一个 OCL 脚本。但是像 { multiplicity must be within range 0..5 and 8..10 }
这样的明文就可以了。只需使用 *
即可获得真正的多重性。