Cómo: Crear elementos y relaciones
En el código de programa de una extensión de Visual Studio Ultimate, puede crear y eliminar elementos y relaciones.
Crear un elemento del modelo
Importaciones del espacio de nombres
Debe incluir las siguientes instrucciones using:
Los métodos de creación se definen como métodos de extensión en este espacio de nombres:
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
Obtener el propietario del elemento que desea crear
Un modelo conforma un único árbol, de modo todos los elementos, a excepción de la raíz del modelo, tienen un propietario. La raíz del modelo es de tipo IModel, que es un tipo de IPackage.
Si está creando un elemento que va a aparecer en un diagrama determinado, por ejemplo, en el diagrama actual del usuario, normalmente deberá crearlo en el paquete que está vinculado a ese diagrama. Por ejemplo:
IPackage linkedPackage = Context.CurrentDiagram.Element as IPackage;
En esta tabla se resumen los propietarios de los elementos comunes del modelo:
Elemento que se va a crear |
Propietario |
---|---|
IActor, IUseCase, IComponent, IClass, IInterface, IEnumeration IActivity, IInteraction |
IPackage, IModel |
IAttribute, IOperation |
IClass, IInterface |
IPart, IPort |
IComponent |
IAction, IObjectNode |
IActivity |
ILifeline, IMessage, ICombinedFragment |
IInteraction |
Invocar el método Create en el propietario
El nombre del método tiene el formato: CreateTipoDePropietario(). Por ejemplo:
IUseCase usecase1 = linkedPackage.CreateUseCase();
Algunos tipos tienen métodos de creación más complejos, especialmente en los diagramas de secuencia. Vea Cómo: Modificar diagramas de secuencia usando la API de UML.
En algunos tipos de elemento, se puede cambiar el propietario de un elemento durante su período de duración mediante SetOwner(newOwner).
Establecer el nombre y otras propiedades
usecase1.Name = "user logs in";
Ejemplo
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"; ...
Crear una asociación
Para crear una asociación
Obtenga el propietario de la asociación, que normalmente es el paquete o modelo que contiene el extremo de origen de la relación.
Invoque el método Create necesario en el propietario.
Establezca las propiedades de la relación, como su nombre.
Por ejemplo:
IAssociation association = subject.Package.CreateAssociation(subject, observer); association .Name = "Observes";
Establezca las propiedades de cada extremo de la relación. Siempre hay dos objetos MemberEnds. Por ejemplo:
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;
Crear una generalización
IGeneralization generalization =
subclass.CreateGeneralization(superClass);
Eliminar un elemento, relación o generalización del modelo
anElement.Delete();
Cuando se elimina un elemento de un modelo:
También se eliminan todas las relaciones que tiene vinculadas.
También se eliminan todas las formas que lo representan en un diagrama.