【问题标题】:Papyrus UML: add a type to a property using a Profile (Metamodel Extension)Papyrus UML:使用配置文件向属性添加类型(元模型扩展)
【发布时间】:2015-02-28 09:23:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: eclipse uml metamodel papyrus


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多