【发布时间】:2013-11-30 18:57:39
【问题描述】:
子集属性在 UML 规范图中广泛使用。
- 子集属性的语义(含义)是什么?
- 如何使用 UML 子集属性?
一个真实的例子会很棒
编辑:
UML 规范 2.5(Beta) 的以下屏幕截图
请告诉我这个图中的子集是什么意思?
【问题讨论】:
标签: properties eclipse-plugin uml ooad
子集属性在 UML 规范图中广泛使用。
一个真实的例子会很棒
UML 规范 2.5(Beta) 的以下屏幕截图
【问题讨论】:
标签: properties eclipse-plugin uml ooad
根据 UML 2.4.1 规范,子集属性引用了该属性被约束为子集的属性。
真实世界的例子是什么意思?我猜UML规范就是其中之一……
但是您可能会在所有应用程序中发现这种属性,其中一个对象与另一个对象关联,并且这种关联是在它们的两个子类型的上下文中重新定义的。
例如,Animal 类可以与Limb 类相关联。我们还可以定义两个类Human 和Leg 分别扩展Animal 和Limb。最后,我们可以关联Human 和Leg,这将是对先前存在的关联的重新定义。
希望对你有帮助, BR
【讨论】:
subsetting property 和subsetted property? #你的回答让我觉得专业化和重新定义是一样的?这是你想说的吗?
由于有两个约束可能会产生问题并且它们有些相关(它们让我想到了这个问题;-))让我来描述它们,即 subsets 和 重新定义
总而言之 - 重新定义更改(提供更精确)模型的相同关系但在专门的类中的逻辑,而 subsets 显示相同类的不同关系之间的关系(它们可能是继承的,但不是必须的)并表明处于一种关系中的对象会创建处于其他关系中的对象的子集。
重新定义 以某种方式改变关系的逻辑,以实现与关系相关联的类的特化。例如。虽然动物可以有任意数量的肢体(章鱼 8 和蜈蚣 - 谁知道......),但人类总是有 4 个。所以我们有一个从 Human 到 Limb 的关系,目标名称为肢体,但改变了多重性(到 4 个)。 图 1 - 正常肢体 - 重新定义
可能还会有进一步的变化,比如我们可能会定义一个专门用于 Limb 的新类 JointLimb。由于人类只有 JointLimb,我们的关系不仅会改变多样性,还会在关系的两端只允许一个专门的类。 图 2 - 关节肢体 - 重新定义
另一方面,subsets 表明处于单一关系(具有 subsets 约束)的对象同时也处于某种其他关系(一个指向子集约束),即关系一中的一组对象是关系二中的对象的子集。在我们的例子中,我们将有新的 Hand 和 Leg 类专门类 Limb(或后一个示例中的 JointLimb)。由于每个手(分别为腿)是一个肢体(JointLimb),因此从人到手(腿)的关系将具有多重性 2,目标名称为手(腿),并将受到 子集肢体 的约束。 图 3 - 正常肢体 - 子集 图 4 - JointLimb - 子集
虽然在前面的示例中,我们有一个与继承有些相关的子集,但不一定是这种情况。让我们考虑类 Car 和类 Wheel。一辆汽车配备了车轮(这是一个关系装备车轮),其中一些(例如乘用车为 4 个)安装了车轮,而一些(乘用车为 1 个)是备用车轮。 MountedWheel 和spareWheel 子集都配备了Wheel。 图 5 - 汽车 - 子集
对不起,我还不能放图片,也不能放超过2个链接,所以你必须关注this link才能看到示例。
希望对您有所帮助。
【讨论】: