"subsets"在UML中确切的意思是什么? [英] What does "subsets" mean in UML exactly?

查看:42
本文介绍了"subsets"在UML中确切的意思是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

UML 2.5.1规范没有很好地定义关键字subsets。我在6.4.2节中找到了以下内容:

约束{subsets Enda}表示应用此约束的关联端将关联端Enda子集。

请考虑下图:

直观地说,我认为这意味着:

  1. 一个人可以是零个或多个俱乐部的成员。
  2. 一个人最多只能做一个俱乐部的领导。
  3. 如果某人是某个俱乐部的领导人,则他/她也是该俱乐部的成员。
  4. 如果某人是某个俱乐部的领导人,则他/她仍然可以同时是其他俱乐部的成员。
我想知道语句4是否正确。在与Jim L.的讨论中,在his answer to another question下的评论中,Jim写道

您不能限制子集的基数,同时仍具有违反限制的超集元素。

如果我很好地理解这一点,如果一个人是俱乐部的领导人,那么他/她就不能成为另一个俱乐部的成员。

UML规范中是否有比我找到的更好地定义subsets的地方?

推荐答案

定义

您可以在第9.5节中找到您要查找的有关属性的内容:

属性是表示分类器属性的StructuralFeature、关联的成员End和结构分类器的各部分。

UML规范强调它也适用于关联结束(第11.5.3.1节,第200页):

关联结束子集具有为属性指定的含义(请参阅9.5.3)。

更确切地说,第9.5.3节(第112页)定义了子集的语义:

一个属性可以标记为另一个subsettedProperty的子集。在这种情况下,通过在某些上下文中消除由Subset属性表示的值集合中的重复项来计算集合。则该集合应包含在(或与其相同)通过从相同上下文中的subsettedProperty表示的值集合中消除重复项计算得出的集合中。

备注:没有定义将关联作为一个整体子集(即超出关联端,就像您的示例一样)。而是关于链接集合(即,关联两端的分类值的元组)而不是值集合的专门化原因的段落。现有的定义也可以很容易地应用。

应用于您的示例

语句%4显示正确。取俱乐部成员AC1C2C3C4,同时担任C1领导:

该定义要求子集属性isLeaderOf中的唯一值集合,即{ C1 }应包含在子集属性isMemberOf中的唯一值集合中,即{ C1, C2, C3, C4 }isLeaderOf的多重性上限不允许成为一个以上俱乐部的领导人。因此它将仅保留C1。包含要求意味着如果AC1的领导者,则C1必须在俱乐部成员资格的值中。只要C1继续存在,您就可以添加更多的俱乐部成员资格。即使添加多个C1成员身份也不会改变您陈述的真实性。

在您的示例中,上限1简化了推理。在更一般的情况下,集合的值不一定是唯一的。因此,在声明多重性的下限和上界时需要一些注意,因为重复的值可能会造成棘手的情况。但是,包含要求是根据唯一值特意定义的。

语句3更复杂,需要演绎:您没有设置对方关联端的子集。这意味着俱乐部C可以有成员M1M2M3,也可以有领导人L,但不能保证领导人是同一俱乐部的成员;您甚至可以有一个没有任何成员的领导人:

  • 子集leader也可以轻松解决此问题。
  • 但即便如此,领导人和成员都是人,多亏了1的上界,我们可以推断出这种情况是不可能的,因此陈述3也是正确的。

这篇关于"subsets"在UML中确切的意思是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆