";subsets";在UML中确切的意思是什么? [英] What does "subsets" mean in UML exactly?
问题描述
UML 2.5.1规范没有很好地定义关键字subsets
。我在6.4.2节中找到了以下内容:
约束{subsets Enda}表示应用此约束的关联端将关联端Enda子集。
请考虑下图:
直观地说,我认为这意味着:
- 一个人可以是零个或多个俱乐部的成员。
- 一个人最多只能做一个俱乐部的领导。
- 如果某人是某个俱乐部的领导人,则他/她也是该俱乐部的成员。
- 如果某人是某个俱乐部的领导人,则他/她仍然可以同时是其他俱乐部的成员。
您不能限制子集的基数,同时仍具有违反限制的超集元素。
如果我很好地理解这一点,如果一个人是俱乐部的领导人,那么他/她就不能成为另一个俱乐部的成员。
UML规范中是否有比我找到的更好地定义subsets
的地方?
推荐答案
定义
您可以在第9.5节中找到您要查找的有关属性的内容:
属性是表示分类器属性的StructuralFeature、关联的成员End和结构分类器的各部分。
UML规范强调它也适用于关联结束(第11.5.3.1节,第200页):
关联结束子集具有为属性指定的含义(请参阅9.5.3)。
更确切地说,第9.5.3节(第112页)定义了子集的语义:
一个属性可以标记为另一个subsettedProperty的子集。在这种情况下,通过在某些上下文中消除由Subset属性表示的值集合中的重复项来计算集合。则该集合应包含在(或与其相同)通过从相同上下文中的subsettedProperty表示的值集合中消除重复项计算得出的集合中。
备注:没有定义将关联作为一个整体子集(即超出关联端,就像您的示例一样)。而是关于链接集合(即,关联两端的分类值的元组)而不是值集合的专门化原因的段落。现有的定义也可以很容易地应用。
应用于您的示例
语句%4显示正确。取俱乐部成员A
C1
、C2
、C3
、C4
,同时担任C1
领导:
isLeaderOf
中的唯一值集合,即{ C1 }
应包含在子集属性isMemberOf
中的唯一值集合中,即{ C1, C2, C3, C4 }
。isLeaderOf
的多重性上限不允许成为一个以上俱乐部的领导人。因此它将仅保留C1
。包含要求意味着如果A
是C1
的领导者,则C1
必须在俱乐部成员资格的值中。只要C1继续存在,您就可以添加更多的俱乐部成员资格。即使添加多个C1成员身份也不会改变您陈述的真实性。在您的示例中,上限1简化了推理。在更一般的情况下,集合的值不一定是唯一的。因此,在声明多重性的下限和上界时需要一些注意,因为重复的值可能会造成棘手的情况。但是,包含要求是根据唯一值特意定义的。
语句3更复杂,需要演绎:您没有设置对方关联端的子集。这意味着俱乐部C
可以有成员M1
、M2
、M3
,也可以有领导人L
,但不能保证领导人是同一俱乐部的成员;您甚至可以有一个没有任何成员的领导人:
- 子集
leader
也可以轻松解决此问题。 - 但即便如此,领导人和成员都是人,多亏了1的上界,我们可以推断出这种情况是不可能的,因此陈述3也是正确的。
这篇关于";subsets";在UML中确切的意思是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!