Вам не нужно расширять существующий метакласс UML для создания нового типа. В метамодели UML определено, что атрибут (Property
) связан с Type
ссылкой type
. Type
, который можно прикрепить к свойству, может быть Inteface/Class/PrimitiveType...
экземпляром. На самом деле, часть базовых типов UML — это всего лишь PrimitiveType
экземпляры, определенные в другой модели, которая импортируется (ищите packageImport
в своей модели UML XMI).
Когда вы устанавливаете тип 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
.
person
Vincent Aranega
schedule
28.02.2015