Papyrus UML:使用配置文件(元模型扩展)将类型添加到 属性

Papyrus UML: add a type to a property using a Profile (Metamodel Extension)

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

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

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

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

当您将 Property 的类型设置为 Integer 时,您将 Property 实例的类型设置为名为 IntegerPrimitiveType 实例.所以如果你想要一个 HashMap 类型,你只需要创建一个名为 HashMapPrimitiveType 的实例(就像你所做的那样)就可以了。

但是,由于您 "binding" 是 Java 的模型,我怀疑您可能想要为泛型类型建模(例如 HashMap<String, Integer>)。为此,您将必须处理 UML 模板。

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

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

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