Compartir a través de


Cómo: Navegar por el modelo UML

En este tema se presentan los principales tipos del modelo UML.

Modelo, elementos del modelo y almacén de modelos

Los tipos definidos en el ensamblado Microsoft.VisualStudio.Uml.Interfaces.dll corresponden a los tipos definidos en la especificación de UML versión 2.1.2.

Los tipos de la especificación de UML se realizan como interfaces en Visual Studio Ultimate. La letra 'I' se antepone al nombre de cada tipo. Por ejemplo: IElement, IClass, IInteraction, IOperation.

Todos los tipos excepto IElement heredan las propiedades de uno o varios supertipos.

Relaciones

Las propiedades y relaciones que se definen en la especificación de UML se implementan como propiedades .NET.

En la mayoría de las relaciones, la navegación puede hacerse en ambas direcciones. Una relación se corresponde con un par de propiedades, con una única propiedad del tipo en cada extremo. Por ejemplo, las propiedades IElement.Owner e IElement.OwnedElements representan dos extremos de una relación. Por tanto, esta expresión siempre se evaluará como true:

IElement c; ... c.OwnedElements.All(x => x.Owner == c)

Muchas relaciones, como IAssociation, también se representan mediante un objeto que puede tener sus propias propiedades.

Si elimina un elemento del modelo, se elimina automáticamente cualquier relación de la que forme parte y se actualiza la propiedad situada en el otro extremo.

Si la especificación de UML asigna una multiplicidad de 0..1 a una propiedad, puede tener el valor null. Una multiplicidad con un valor máximo mayor que 1 significa que la propiedad .NET tiene el tipo: IEnumerable<Type>.

Para obtener más información acerca de cómo se recorren las relaciones, vea Cómo: Navegar por las relaciones con la API de UML.

Árbol de propiedad

Un modelo contiene un árbol de objetos IElement. Cada elemento tiene las propiedades OwnedElements y Owner.

En la mayoría de los casos, también existen referencias a los destinos de las propiedades Owner y OwnedElements en otras propiedades que tienen nombres más específicos. Por ejemplo, cada una de las operaciones de UML pertenece a una clase UML. Por lo tanto, IOperation tiene una propiedad denominada Class, y en cada objeto IOperation, Class == Owner.

El elemento del nivel superior del árbol, que no tiene propietario, es un IModel. El objeto IModel está incluido en un objeto IModelStore, donde es la propiedad Root.

Cada elemento del modelo se crea con un propietario. Para obtener más información, vea Cómo: Crear elementos y relaciones.

Diagrama de clases: modelo, diagrama, forma y elemento

Formas y diagramas

Los elementos del modelo UML se pueden representar en diagramas. Pueden aparecer diferentes subtipos de IElement en distintos tipos de diagramas.

En algunos casos, un elemento puede aparecer en varios diagramas. Por ejemplo, un elemento IUseCase puede tener varios objetos IShapes, que pueden aparecer en un único diagrama o en varios diagramas diferentes.

Las formas están organizadas en un árbol. Los bordes del árbol se representan mediante las propiedades ParentShape y ChildShapes. Los diagramas son las únicas formas que no tienen elementos primarios. Las formas de la superficie de un diagrama se crean a partir de elementos más pequeños. Por ejemplo, la forma de una clase tiene compartimientos para los atributos y las operaciones.

Para obtener más información sobre las formas, vea Cómo: Mostrar un modelo en diagramas.

Acceso al modelo en las extensiones

En las extensiones de Visual Studio definidas como componentes MEF, puede declarar propiedades que importen información a partir del contexto en el que se ejecuta la extensión.

Tipo de atributo

Objeto al que proporciona acceso

Más información

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

(en Microsoft.VisualStudio.ArchitectureTools.Extensibility.dll)

Diagrama que tiene el foco en la actualidad.

Cómo: Definir un comando de menú en un diagrama de modelado

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

(en Microsoft.VisualStudio.Modeling.Sdk.12.0.dll)

Permite agrupar cambios en transacciones.

Cómo: Vincular actualizaciones del modelo mediante transacciones

Microsoft.VisualStudio.Shell .SVsServiceProvider

(en Microsoft.VisualStudio.Shell.Immutable.12.0.dll)

Ejecución de Visual Studio que constituye el host. Desde allí se puede obtener acceso a los archivos, proyectos y otros aspectos.

Cómo: Abrir un modelo UML mediante la API de Visual Studio

Para obtener el contexto

Declare una o las dos interfaces siguientes en la clase de la extensión:

[Import] public IDiagramContext DiagramContext { get; set; }

Managed Extensibility Framework (MEF) establecerá enlaces entre las interfaces y las definiciones a partir de las cuales podrá obtener el diagrama actual, el almacén del modelo, el objeto raíz, etc.

IDiagram diagram = this.DiagramContext.CurrentDiagram;
IClassDiagram classDiagram = diagram as IClassDiagram;
       // or diagrams of other types
IModelStore modelStore = diagram.ModelStore;
IModel model = modelStore.Root;
foreach (IDiagram diagram in modelStore.Diagrams) {...}
foreach (IElement element in modelStore.AllInstances<IUseCase>) {...}

Para obtener la selección actual

// All selected shapes and their elements
foreach (IShape shape in diagram.SelectedShapes)
{  
   IDiagram selectedDiagram = shape as IDiagram;
   if (selectedDiagram != null)
   { // no shape selected - user right-clicked the diagram
     ... Context.CurrentDiagram ...
   }
   else
   {
     IElement selectedElement = shape.Element;
   ...}
// All selected shapes that display a specfic type of element
foreach (IShape<IInterface> in 
   diagram.GetSelectedShapes<IInterface>()) 
{...}

Tener acceso a otro modelo o diagramas

Puede realizar lo siguiente:

Vea también

Conceptos

Ampliar modelos y diagramas UML

Programar con la API de UML