我在 Eclipse 中使用 Papyrus UML 定义了一个配置文件。我用几个Stereotype类扩展了元类“Class”和“Property”。我可以在我的实际模型中正确看到新的刻板印象。 我想在我的配置文件中定义我自己的类型,以便将它们用于模型中类的属性。
示例:我希望在具有HashMap类型的类中具有未在基本 Java Type 中定义的属性。我可以在我的配置文件中定义一个<<Primitive Type>>
类,命名为“HashMap”,但我不清楚我需要扩展哪个UML元类。
如果您有时间,请为我提供有关个人资料定义的分步示例。非常感谢!
答案 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
实例。