Como: Navegue de modelo UML

Este tópico apresenta os principais tipos de modelo UML.

Os elementos de modelo, modelo e modelo de armazenamento

Os tipos definidos no assembly Microsoft.VisualStudio.Uml.Interfaces.dll correspondem aos tipos definidos no especificação UML, versão 2.1.2.

Tipos na especificação UML são percebidos como interfaces no Visual Studio Ultimate. A letra 'I' é anexado ao nome de cada tipo. Por exemplo: IElement, IClass, IInteraction, IOperation.

Todos os tipos exceto IElement herdam propriedades supertipos de uma ou mais.

Relacionamentos

Propriedades e os relacionamentos são definidos na especificação UML são implementados como.Propriedades de rede.

A maioria dos relacionamentos são navegáveis em ambas as direções. Uma relação corresponde a um par de propriedades, com uma propriedade do tipo em cada extremidade. Por exemplo, as propriedades IElement.Owner e IElement.OwnedElements representam as duas extremidades de um relacionamento. Portanto, essa expressão será sempre avaliada como true:

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

Muitas relações, como, por exemplo, IAssociation, também são representadas por um objeto que pode ter suas próprias propriedades.

Se você excluir um elemento do modelo, qualquer relacionamento no qual ele leva a parte é excluído automaticamente e a propriedade na outra extremidade é atualizada.

Se a especificação UML atribui uma multiplicidade de 0 a uma propriedade, ela pode ter o valor null. Uma multiplicidade com máximo maior que 1 significa que o.NET propriedade tem o tipo: IEnumerable<Tipo>

Para obter mais informações sobre como percorrer as relações, consulte Como: Navegue nas relações com a API de UML.

A árvore de propriedade

Um modelo contém uma árvore de IElement objetos. Cada elemento tem propriedades OwnedElements e Owner.

Na maioria dos casos, os destinos da Owner e OwnedElements Propriedades também são referenciadas por outras propriedades que possuem nomes mais específicas. Por exemplo, cada operação de UML pertence a uma classe UML. Portanto, IOperation tem uma propriedade chamada Classe em cada IOperation objeto, Class == Owner.

O elemento superior da árvore, que não possui nenhum proprietário, é um IModel. O IModel está contido dentro de um IModelStore, no qual é o Root.

Cada elemento de modelo é criado com um proprietário. Para obter mais informações, consulte Como: Criar elementos e relações.

Diagrama de classes: Model, Diagram, Shape e Element

Formas e diagramas

Elementos de modelo UML podem ser exibidos em diagramas. Diferentes tipos de diagramas podem exibir diferentes subtipos de IElement.

Em alguns casos, um elemento pode aparecer em mais de um diagrama. Por exemplo, um elemento IUseCase pode ter vários IShapes, o que pode aparecer em um diagrama ou diagramas diferentes.

As formas são organizadas em uma árvore. As bordas da árvore são representadas pelas propriedades ParentShape e ChildShapes. Os diagramas são apenas formas que não possuem os pais. As formas na superfície de um diagrama são compostas de partes menores. Por exemplo, uma forma classe possui compartimentos para atributos e operações.

Para obter mais informações sobre formas, consulte Como: Exibir um modelo em diagramas.

Acesso ao modelo de extensões

Em Visual Studio extensões definidas como MEF componentes, você pode declarar propriedades importar informações de contexto no qual executa a extensão.

Tipo de atributo

O que fornece acesso a

Obter mais informações

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

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

Diagrama de foco atual.

Como: Definir um comando de Menu em um diagrama de modelagem

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

(em Microsoft.VisualStudio.Modeling.Sdk.10.0.dll)

Permite alterações de grupo em transações.

Como: Atualizações do modelo de link usando transações

Microsoft.VisualStudio.Shell.SVsServiceProvider

(em Microsoft.VisualStudio.Shell.Immutable.10.0.dll)

O host Visual Studio. A partir daí, você pode acessar arquivos, projetos e outros aspectos.

Como: Abrir um modelo UML usando a API de Visual Studio

Para obter o contexto.

Declare uma ou ambas das seguintes interfaces dentro de sua classe de extensão:

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

O Managed Extensibility Framework (MEF) irá vincular essas definições a partir do qual você pode obter o diagrama atual, o armazenamento de modelo, objeto raiz e assim por diante:

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 obter a seleção atual

// 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>()) 
{...}

Acessando o outro modelo ou diagramas

Você pode:

Consulte também

Conceitos

Diagramas e modelos UML estendendo

Programação com a API de UML