Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСМ / developer-guide.pdf
Скачиваний:
38
Добавлен:
10.05.2015
Размер:
7.31 Mб
Скачать

StarUML. Руководство разработчика. Глава 4. Использование API

19 / 139

элементов UML.

Типы элементов моделирования разделены на модельные элементы, представления и диаграммы. Однако, диаграммы фактически являются подмножеством модельных элементов и представлений, и, таким образом, более точным будет разделение на модельные элементы и представления. Модельный элемент - элемент, который содержит актуальную информацию о модели программной системы, а представление - визуальное отображение информации, содержавшейся в определенном модельном элементе. Один модельный элемент может иметь множество визуальных представлений, в то время как представление, в общем случае, имеет ссылку только на один модельный элемент.

Простой пример использования элементов моделирования

Перед тем как представить внешние интерфейсы API для элементов моделирования, позвольте рассмотреть простой пример их использования. Предположим, что мы хотим перебрать все элементы приложения StarUML™ сверху до низу через пространства имён пакетов, классов, интерфейсов и т.д. В этом случае должна анализироваться структура элементов моделирования. Следующий код на Jscript иллюстрирует эту структуру.

var app, prj;

app = new ActiveXObject("StarUML.StarUMLApplication"); prj = app.GetProject();

VisitOwnedElement(prj);

function VisitOwnedElement(owner){ var elem;

for (var i = 0; i < owner.GetOwnedElementCount(); i++){ elem = owner.GetOwnedElementAt(i);

...

if (elem.IsKindOf("UMLNamespace")) VisitOwnedElement(elem);

}

}

В этом примере, все суб-элементы, которые находятся в отношении "OwnedElement" с некоторым главным элементом, извлекаются рекурсивно. Самая важная часть этого кода - определяемая пользователем функция с именем VisitOwnedElement. Эта функция берет некоторый элемент абстрактного общего типа IUMLNamespace (который является модельным элементом) как входной параметр и использует функции GetOwnedElementCount и GetOwnedElementAt, которые являются методами интерфейса IUMLNamespace.

Информация, требуемая чтобы структурировать функцию VisitOwnedElement, может быть получена из отношений элементов моделирования. Следующая диаграмма иллюстрирует отношения между типами интерфейсов API StarUML™, которые связаны с примером использования интерфейса IMULNamespace (см. выше).

StarUML. Руководство разработчика. Глава 4. Использование API

20 / 139

Интерфейс IUMLNamespace унаследован от IUMLModelElement, который является родительским типом для типов IUMLPackage, IUMLClass и IUMLInterface. IUMLNamespce также имеет ассоциацию Namespace-OwnedElement. Диаграмма показывает, что элементы типа IUMLNamespace, подобные IUMLPackage, IUMLClass, и т.д. обладают (как агрегаты) элементами типа IUMLModelElement в качестве OwnedElements. Таким образом, интерфейсы API определены в соответствии с реальными отношениями между модельными элементами.

Обратите внимание: имена модельных элементов, которые относятся к категории стандартных элементов UML, начинаются с префикса "UML" перед стандартным названием элемента UML. Например, имя элемента Актор - UMLActor. Кроме того используется префикс "I", в соответствии с соглашением о кодировании имён интерфейсов, в итоге - IUMLActor. Пожалуйста обратитесь к "Приложению B. Список модельных элементов UML" для получения полного перечня элементов UML и их названий.

Соглашение для выражения ассоциации в API

Диаграмма, представленная выше показывает что интерфейсы IUMLModelElement и IUMLNamespace имеют ассоциацию OwnedElement-Namespace. Такие ассоциации выражают ссылки между интерфейсами API StarUML™. Например, ассоциация с Namespace в интерфейсе IUMLModelElement выражается в виде свойства, как показано ниже.

IUMLModelElement

Namespace: IUMLNamespace

Эта же ассоциация OwnedElement, но в интерфейсе IUMLNamespace выражена по другому (см. ниже). Это происходит, потому что атрибут Multiplicity метамодели имеет значение *, и для его реализации во внутреннем представлении программы будет использована структура группы или списка. Поскольку все ассоциации в интерфейсах API выражены, используя то же самое соглашение, то данный пример применим и ко всем другие интерфейсам, так же как к IUMLModelElement-IUMLNamespace.

Соседние файлы в папке ТСМ