0

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

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

如果您有时间,请为我提供配置文件定义的分步示例。非常感谢!

4

1 回答 1

1

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

当您将 a 的类型设置Property为 时Integer,您将Property实例的类型设置PrimitiveType为名为 的实例Integer。所以如果你想要一个HashMap类型,你只需要创建一个PrimitiveType命名的实例HashMap(就像你所做的那样),仅此而已。

但是,当您将模型“绑定”到 Java 时,我怀疑您可能想要对泛型类型进行建模(HashMap<String, Integer>例如)。为此,您必须处理 UML 模板。

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

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

注意PrimitiveType是一个 UML 元类。您可以使用构造型(假设A在这里)对其进行扩展,以创建更精致的PrimitiveType元类。如果您这样做,在您的 UML 模型中,您将能够创建A实例,但您将无法A用作Property类型。您将能够使用的唯一对象将是创建的A实例。

于 2015-02-28T16:23:33.083 回答