Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
20.03.2016
Размер:
7.31 Mб
Скачать

StarUML. Руководство разработчика. Глава 7. Написание профилей UML

79 / 139

Поиск элементов расширения

Интерфейс IProfile предоставляет методы поиска интерфейсов элементов расширения, определенных в профиле.

FindTagDefinition(TagDefinitionSet: String, Name: String): ITagDefinition

FindTagDefinitionSet(Name: String): ITagDefinitionSet

FindStereotype(Name: String, BaseClass: String): IStereotype

FindDataType(Name: String): IDataTypeManaging

Обработка стереотипов

Интерфейс IStereotype предоставляет информацию о стереотипах, определенных в профиле. Основная информация о стереотипе, имя, описание и имя файла иконки, может быть получена через неизменяемые свойства интерфейса IStereotype.

IStereotype предоставляет методы для получения списка элементов UML, к которым могут быть применены стереотипы: GetBaseClassCount (), GetBaseClassAt (), CanApplyTo (), и т.д. Методы GetBaseClassCount () и GetBaseClassAt () позволяют получить имена элементов UML, которые могут быть использованы с данным стереотипом. Метод CanApplyTo() указывает, может ли элемент UML, указанный как аргумент, принять текущий стереотип, возвращая значение типа Boolean.

Свойство BaseClass стереотипа может указывать не только на элементы UML, отображаемые на диаграммах, но также и на абстрактные элементы верхнего уровня, подобные UMLClassifier. В этом случае, стереотип может быть применен ко всем элементам-потомкам указанного элемента верхнего уровня. Например, предположим, что UMLClassifier определен как BaseClass, тогда это означает то же самое, как будто бы все его потомки UMLClass, UMLInterface, UMLUseCase, и UMLActor определены как BaseClass для этого стереотипа. Для изучения структуры наследования между модельными элементами, см. Plastic Application Model.

Метод GetStereotype () интерфейса IExtensibleModel возвращает объект IStereotype указанного модельного элемента. Если стереотип элемента не определен в профиле (это допускается), будет возвращено пустое значение. В этом случае, свойство StereotypeName интерфейса IExtensibleModel может использоваться, чтобы получить незарегистрированное имя стереотипа.

Следующий пример на JScript выводит в окно сообщений описание стереотипа текущего модельного элемнта.

var selMgr = app.SelectionManager;

if (selMgr.GetSelectedModelCount() > 0) {

var selModel = selMgr.GetSelectedModelAt(0); var st = selModel.GetStereotype();

if (st != null) { WScript.Echo(st.Описание)

}}

Работа с определениями тегов

Интерфейс ITagDefinition предоставляет информацию о тегах, определенных в профиле. ITagDefinition предоставляет следующие свойства.

Свойство

Описание

 

 

Name: String

Имя определения тега. Имя тега дожно быть уникальным в пределах набора.

StarUML. Руководство разработчика. Глава 7. Написание профилей UML

80 / 139

 

 

 

Свойство

Описание

 

 

 

 

 

Тип тега.

 

 

Допустимы следующие типы.

 

 

tkInteger = 0 (integer)

 

 

tkBoolean = 1 (boolean)

 

 

tkString = 2 (string)

 

TagType: TagTypeKind

tkReal = 3 (real number)

 

tkEnumeration = 4 (enumeration)

 

 

 

 

tkReference = 5 (reference)

 

 

tkCollection = 6 (collection)

 

 

В зависимости от типа тега, используются различные методы получения его

 

 

значения. Интерфейс IExtensibleModel включает методы получения значения тега

 

под каждый допустимый тип.

 

 

Указывает тип объектной ссылки, допустимой для определения значения тега, когда

 

TagType - tkReference или tkCollection. Например, установив это свойство в

 

ReferenceType: String

"UMLClass", вы разрешаете присвоить тегу только ссылку на класс. Если

 

 

определение для ReferenceType опущено в документе профиля, то по умолчанию

 

используется "UMLModelElement". Если TagType - не tkReferece или tkCollection,

 

это свойство не имеет никакого эффекта.

 

 

Определяет заданное по умолчанию значение тега. Если TagType - tkEnumeration, то

DefaultValue: String

оно содержит строковое значение. Если TagType - tkReference или tkCollection, то

заданное по умолчанию значение установлено как пустой указатель, и это свойство

 

 

не имеет никакого эффекта.

 

Следующий пример на JScript выводит в окно сообщений заданное по умолчанию значение тега Derived из набора Default профиля UMLStandard.

var ext = app.ExtensionManager;

var tag = ext.FindTagDefinition("UMLStandard", "Default", "Derived"); WScript.Echo(tag.DefaultValue);

Соседние файлы в папке ПиАПС ЛР2