Практическое руководство. Создание элементов и отношений

В программном коде расширения Visual Studio Ultimate можно создавать и удалять элементы и отношения.

Создание элемента модели

Ee330929.collapse_all(ru-ru,VS.110).gifИмпорты пространства имен

Необходимо включить следующие операторы using.

Методы создания определены в этом пространстве имен в качестве методов расширения.

using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;

Ee330929.collapse_all(ru-ru,VS.110).gifПолучение владельца элемента, который необходимо создать

Модель создает одно дерево, так что каждый элемент, кроме корня модели, имеет одного владельца.Корень модели имеет тип 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

Ee330929.collapse_all(ru-ru,VS.110).gifВызов метода создания для владельца

Имя метода имеет форму CreateOwnedType().Примеры.

IUseCase usecase1 = linkedPackage.CreateUseCase();

Некоторые типы имеют более сложные методы создания, особенно в схемах последовательностей.См. Практическое руководство. Редактирование схем последовательностей с помощью API UML.

Для некоторых типов элементов в течение жизненного цикла можно изменить владельца элемента, воспользовавшись SetOwner(newOwner). 

Ee330929.collapse_all(ru-ru,VS.110).gifЗадание имени и других свойств

usecase1.Name = "user logs in";

 

Ee330929.collapse_all(ru-ru,VS.110).gifПример

 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"; ...

Создание ассоциации

Создание ассоциации

  1. Получите владельца ассоциации. Как правило, это пакет или модель, которая содержит исходное окончание отношения.

  2. Вызовите для владельца требуемый метод создания.

  3. Задайте свойства отношения, такие как имя.

    Примеры.

    IAssociation association = subject.Package.CreateAssociation(subject, observer);
    association .Name = "Observes";
    
  4. Задайте свойства каждого окончания отношения.Всегда имеется два 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();

При удалении элемента из модели происходит следующее.

  • Каждое отношение, связанное с этим элементом, также удаляется.

  • Каждая фигура, представлявшая элемент на схеме, также удаляется.

 

См. также

Основные понятия

Расширение моделей и схем UML

Практическое руководство. Отображение модели на схемах