UML多重元素中的多个值范围
根据UML规范,在多重元素中指定多个值范围是否正确?例如,AssociationEnd:3..7,10..20处的两个范围或属性的两个范围,例如account:account[0..5,8..10]。流行的工具允许这样做。它是否正确?一个UML多重元素中的多个值范围,uml,Uml,根据UML规范,在多重元素中指定多个值范围是否正确?例如,AssociationEnd:3..7,10..20处的两个范围或属性的两个范围,例如account:account[0..5,8..10]。流行的工具允许这样做。它是否正确?一个乘法元素只能有一个 我不清楚一个umldiagrameElement是否可以关联更多的多重元素。似乎允许第章B.8.15.1TLDR:不,这种多重性是不正确的 完整答案 UML2.5规范的第7.5.2节和第7.5.3.2节明确定义了多重性在多重性元素中定义为两个
乘法元素只能有一个
我不清楚一个umldiagrameElement
是否可以关联更多的多重元素。似乎允许第章B.8.15.1
TLDR:不,这种多重性是不正确的
完整答案
UML2.5规范的第7.5.2节和第7.5.3.2节明确定义了多重性在多重性元素中定义为两个数字之间的范围,一个特定的数字(如果上限和下限相等),或者如果上限
数字是*
,则从一个数字到无穷大的范围。不幸的是,您不能只列出特定的值。更具体地说,它由两个数字列出,lower
和upper
,这两个数字定义了多重性范围限制
我记得这在UML的早期版本中是可能的,但是我只在一些书中看到过(不幸的是我记不清楚),而不是规范本身
至于B.8.15.1,它没有说明可能的值,特别是没有建议列出几个值/范围的可能性
因此,可能的值为:
a
a..b
(其中a
虽然在语法上不允许使用表示法,但您可能希望指定集合。这可以通过附加约束轻松完成。如果您有足够的头脑,您可以构造OCL脚本。但是一些清晰的文本,如{multiplicity必须在0..5和8..10}范围内
就可以了。只需使用一个*
来表示实际的多重性。另一方面,多重性元素的多重性的上下限由ValueSpecification(第7.5.3.2章)指定。如果我没有错的话,它们可以有间隔。第7.5.4.1章说“是Integer类型的ValueSpecification,是UnlimitedNatural类型的ValueSpecification”。因此没有间隔,只有一个间隔“…”