Papyrus UML:使用Profile(Metamodel Extension)向属性添加类型

时间:2015-02-28 09:23:39

标签: eclipse uml metamodel papyrus

我在 Eclipse 中使用 Papyrus UML 定义了一个配置文件。我用几个Stereotype类扩展了元类“Class”和“Property”。我可以在我的实际模型中正确看到新的刻板印象。 我想在我的配置文件中定义我自己的类型,以便将它们用于模型中类的属性。

示例:我希望在具有HashMap类型的类中具有未在基本 Java Type 中定义的属性。我可以在我的配置文件中定义一个<<Primitive Type>>类,命名为“HashMap”,但我不清楚我需要扩展哪个UML元类。

如果您有时间,请为我提供有关个人资料定义的分步示例。非常感谢!

1 个答案:

答案 0 :(得分:1)

您不需要扩展现有的UML元类来创建新类型。在UML元模型中,定义了属性(Property)通过引用Type链接到type。可以附加到媒体资源的Type可以是Inteface/Class/PrimitiveType... 实例。实际上,部分UML基本类型只是在导入的其他模型中定义的PrimitiveType个实例(在UML模型XMI中查找packageImport)。

当您将Property的类型设置为Integer时,可以将Property实例的类型设置为名为PrimitiveType的{​​{1}}实例。因此,如果您需要Integer类型,则只需创建名为HashMap的{​​{1}}实例(就像您所做的那样),就是这样。

但是,当您将模型“绑定”到Java时,我怀疑您可能希望对泛型类型(例如PrimitiveType)进行建模。为此,您必须处理UML模板。

http://www.uml-diagrams.org/template.html

在这种情况下,您必须使用两个名为HashMap的正式参数创建一个可模板HashMap<String, Integer>并绑定它以生成绑定类型。然后,您将能够将绑定类型用作Class实例的类型(也不需要UML元模型扩展)。

注意的: HashMap是UML元类。你可以使用原型(在这里说Property)来扩展它,以便创建一个更精致的PrimitiveType元类。如果您这样做,在您的UML模型中,您将能够创建A个实例,但您不会将PrimitiveType用作A类型。您将能够使用的唯一对象是创建的A实例。