1

在使用Papyrus (+Eclipse) 时,我遇到了一个我最初认为是不一致的问题。但是在思考之后,我开始认为我的 UML 设计的基本概念中可能存在“错误”

好吧,考虑基本的类继承问题,其中ManWomanPerson. (换句话说,Person是 and 的超类ManWoman

然后,如果您将Stereotype Worker(例如包含参数jobsalary)应用于Person,子类不应该也收到相同的原型Worker吗?它们不应该包含jobsalary参数吗?

我真的虽然 Stereotypes 也是从超类继承的,但是当我在 Papyrus 工具中实现这个设计时,我看不到任何继承的jobsalary. 每个子类都与没有任何应用的 Stereotype 相同。

提前致谢!

======================已编辑以获取更多信息========================

我发现在 2000 年针对 UML v1.3 提出了一个关于子类中原型继承的问题。

问题 3210:刻板印象的继承 (uml-rtf)

在我的解释中,讨论中提供的例子正是我上面问的。然而,审稿人似乎理解问题是要求 Stereotype 的子类型,而不是从一个原型类到其子类的约束传播。

这是添加到 UML v1.3 的要点:

刻板印象是GeneralizableElements。如果一个原型是另一个原型的子类型,那么它会从它的原型超型继承所有的约束和标记值,并且它必须应用于相同类型的基类。构造型跟踪它可能应用到的基类。

后来,它在 UML v1.4 中被弃用并在 UML 2 中被删除。

所以,基本上,根据我的解释,问题存在......但UML规范仍然没有指定它。

4

1 回答 1

1

我也认为刻板印象是继承的,但我在网络或 UML 标准中找不到关于这一点的任何参考。但是根据您的描述,您可能应该使用多重继承或接口。

刻板印象用于扩展类 - 为类元素而不是实例提供更多属性。UML 中的类具有名称、属性(字段)和方法。当您向类添加构造型时,实际上是在向该类添加另一组属性。例如,如果您正在编写 MVC(模型-视图-控制器)系统,并且您想指定哪些类是视图、哪些是模型以及哪些控制器,那么使用构造型将是一个很好的答案,因为您正在描述一个属性类的,而不是特定实例的。这似乎不是你的情况。

于 2012-10-23T10:07:31.737 回答