Como: navegar o 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.For example: IElement, IClass, IInteraction, IOperation.

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

Ee330925.collapse_all(pt-br,VS.110).gifRelacionamentos

Propriedades e relacionamentos que são definidos na especificação UML são implementados como.NET propriedades.

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 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 tem participação é 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 de>.

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

Ee330925.collapse_all(pt-br,VS.110).gifA á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 têm 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.

No 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: modelo, diagrama, forma e elemento

Formas e diagramas

Elementos no 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 de IUseCase pode ter vários IShapes, que podem 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 as formas, consulte Como: exibir um modelo em diagramas.

Acesso ao modelo nas extensões

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

Tipo de atributo

O que fornece acesso a

Obter mais informações

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

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

O 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.11.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.11.0.dll)

The 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

Ee330925.collapse_all(pt-br,VS.110).gifPara 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) se ligará 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>) {...}

Ee330925.collapse_all(pt-br,VS.110).gifPara 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 outro modelo ou diagramas

Você pode:

Consulte também

Conceitos

Diagramas e modelos UML estendendo

Programação com a API de UML