Практическое руководство. Создание элементов и отношений
В программном коде расширения Visual Studio Ultimate можно создавать и удалять элементы и отношения.
Создание элемента модели
Импорты пространства имен
Необходимо включить следующие операторы using.
Методы создания определены в этом пространстве имен в качестве методов расширения.
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
Получение владельца элемента, который необходимо создать
Модель создает одно дерево, так что каждый элемент, кроме корня модели, имеет одного владельца.Корень модели имеет тип IModel, который является типом IPackage.
Если создается элемент, который будет отображаться на определенной схеме, например на текущей схеме пользователя, как правило, необходимо создавать элемент в пакете, связанном с этой схемой.Примеры.
IPackage linkedPackage = Context.CurrentDiagram.Element as IPackage;
В этой таблице обобщены сведения о владении общими элементами модели.
Создаваемый элемент |
Владелец |
---|---|
IActor, IUseCase, IComponent, IClass, IInterface, IEnumeration IActivity, IInteraction |
IPackage, IModel |
IAttribute, IOperation |
IClass, IInterface |
IPart, IPort |
IComponent |
IAction, IObjectNode |
IActivity |
ILifeline, IMessage, ICombinedFragment |
IInteraction |
Вызов метода создания для владельца
Имя метода имеет форму CreateOwnedType().Примеры.
IUseCase usecase1 = linkedPackage.CreateUseCase();
Некоторые типы имеют более сложные методы создания, особенно в схемах последовательностей.См. Практическое руководство. Редактирование схем последовательностей с помощью API UML.
Для некоторых типов элементов в течение жизненного цикла можно изменить владельца элемента, воспользовавшись SetOwner(newOwner).
Задание имени и других свойств
usecase1.Name = "user logs in";
Пример
using Microsoft.VisualStudio.Uml.Classes;
using Microsoft.VisualStudio.Uml.Extensions;
...
void InstantiateObserverPattern (IPackage package, string namePrefix)
{ IInterface observer = package.CreateInterface();
observer.Name = namePrefix + "Observer";
IOperation operation = observer.CreateOperation();
operation.Name = "Update";
IClass subject = package.CreateClass();
subject.Name = namePrefix + "Subject"; ...
Создание ассоциации
Создание ассоциации
Получите владельца ассоциации. Как правило, это пакет или модель, которая содержит исходное окончание отношения.
Вызовите для владельца требуемый метод создания.
Задайте свойства отношения, такие как имя.
Примеры.
IAssociation association = subject.Package.CreateAssociation(subject, observer); association .Name = "Observes";
Задайте свойства каждого окончания отношения.Всегда имеется два MemberEnds.Примеры.
association .MemberEnds[0].Name = "subject"; // role name association .MemberEnds[1].Name = "observers"; // role name association .MemberEnds[1].SetBounds("0..*"); // multiplicity defaults to "1" association.MemberEnds[0].Aggregation = AggregationKind.Composite;
Создание обобщения
IGeneralization generalization =
subclass.CreateGeneralization(superClass);
Удаление из модели элемента, отношения или обобщения
anElement.Delete();
При удалении элемента из модели происходит следующее.
Каждое отношение, связанное с этим элементом, также удаляется.
Каждая фигура, представлявшая элемент на схеме, также удаляется.