如何在UML中使用Subsetted Property?

Chr*_*iss 5 uml ooad eclipse-plugin properties

子集属性广泛用于UML规范图中.

  • 子集属性的语义(含义)是什么?
  • 如何使用UML子集属性?

一个现实世界的例子会很棒

编辑:

UML规范2.5(Beta)的以下屏幕截图

你能告诉我这个图中的子集是什么意思吗?

在此输入图像描述

Ist*_*ter 7

简答

由于有两个约束可能会产生问题并且它们有些相关(并且它们使我想到了这个问题;-))让我描述它们,即子集重新定义

总结 -重新定义相同关系但在专门类中的模型的更改(提供更精确)逻辑,而子集显示相同类的不同关系之间的关系(它们可能被继承但不必)并显示对象处于一种关系中创建处于另一种关系中的对象的子集。

更详细的回答

重新定义

以某种方式重新定义关系逻辑的变化,用于与关系相关联的类的特化。例如,虽然动物可以有任意数量的肢体(章鱼 8 和蜈蚣 - 谁知道......),但人类总是 4。所以我们有一个从 Human 到 Limb 的关系,目标名称为limb,但多样性改变了(到 4)。图 1 - 正常肢体 - 重新定义

可能还会有进一步的变化,比如我们可能会定义一个专门用于 Limb 的新类 JointLimb。由于人类只有 JointLimb,我们的关系不仅会改变多样性,而且在关系的两端只允许一个专门的类。图 2 - 关节肢体 - 重新定义

子集

另一方面,子集显示处于一个关系中的对象(具有子集约束)同时也处于其他一些关系中(子集约束中的那个)即关系中的一组对象是一个子集关系二中的对象。在我们的例子中,我们将有新的 Hand 和 Leg 类,专门类 Limb(或后一个例子中的 JointLimb)。由于每只手(分别为腿)都是肢体(关节肢体),因此从人到手(腿)的关系将具有多重性 2,目标名称为手(腿)并且将受到子集limb 的约束。图 3 - 正常肢体 - 子集 图 4 - JointLimb - 子集

虽然在前面的例子中我们有一个与继承有些相关的子集,但不一定是这种情况。让我们考虑类 Car 和类 Wheel。一辆汽车配备了Wheel(这是一个配备了Wheel的关系),其中一些(例如客车4个)是mountedWheel,而一些(客车1个)是spareWheel。mountWheel 和spareWheel 子集都配备了Wheel。图 5 - 汽车 - 子集

抱歉,我还不能放置图片,也不能放置超过 2 个链接,因此您必须点击此链接才能查看示例。

希望有帮助。


Red*_*ard 5

根据UML 2.4.1规范,Subsetted Property引用此属性被约束为子集的属性.你是什​​么意思的真实世界的例子?UML规范是其中之一我猜...但是你可能会在所有应用程序中找到这种属性,其中一个Object与另一个关联,并且这种关联在它们的两个子类型的上下文中被重新定义.例如,Animal类可以与Limb类相关联.我们可以定义两个类Human和Leg分别扩展Animal和Limb.最后,我们可以将人与腿联系起来,这将是对先前存在的关联的重新定义.

Modelio子集

希望它有所帮助,BR