Partilhar via


Como: navegar no modelo UML

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

Os Elementos de Modelo, Modelo e Armazenamento de Modelo

Os tipos definidos no assembly Microsoft.VisualStudio.Uml.Interfaces.dll correspondem aos tipos definidos na 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' é acrescentada ao nome de cada tipo. Por exemplo: IElement, IClass, IInteraction, IOperation.

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

Relações

As propriedades e relações definidas na Especificação de UML são implementadas como propriedades .NET.

A maioria das relações são navegáveis em ambas as direções. Uma relação corresponde a um par de propriedades, com uma propriedade no tipo em cada final. Por exemplo, as propriedades IElement.Owner e IElement.OwnedElements representam dois fins de uma relação. Portanto, essa expressão sempre será avaliada como verdadeira:

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

Muitas relações, como 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 participa é excluído automaticamente, e a propriedade é atualizada no extremo oposto.

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

Para obter mais informações sobre relações de atravessamento, consulte Como navegar em relações com a API UML.

A árvore de propriedade

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

Na maioria dos casos, os destinos das propriedades Owner e OwnedElements também são referenciados por outras propriedades que têm um nome mais específico. Por exemplo, cada operação de UML é pertencente a uma classe de UML. Portanto, IOperation tem uma propriedade chamada Class e em cada objeto IOperation, Class == Owner.

O elemento no topo da árvore, que não tem nenhum Proprietário, é um IModel. O IModel está contido em um IModelStore, no qual ele é 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 classe: elemento, diagrama, forma e modelo

Formas e diagramas

Os elementos no modelo de UML podem ser exibidos em diagramas. Os diferentes tipos de diagramas podem exibir subtipos diferentes 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 em diagramas diferentes.

As formas são organizadas em uma árvore. As bordas de árvore são representadas pelas propriedades ParentShape e ChildShapes. Os diagramas são as únicas formas que não têm pais. As formas na superfície de um diagrama são compostas de partes menores. Por exemplo, uma forma de classe tem compartimentos para atributos e operações.

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

Acesso ao modelo em extensões

Nas extensões do Visual Studio definidas como componentes de MEF, você pode declarar as propriedades que importam informações do contexto no qual a extensão é executada.

Tipo de atributo

Permite o acesso a

Mais informações

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

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

O diagrama atual de foco.

Como definir um comando de menu em um diagrama de modelagem

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

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

Permite o agrupamento das alterações em transações.

Como vincular atualizações de modelo usando transações

Microsoft.VisualStudio.Shell .SVsServiceProvider

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

O host Visual Studio. Lá você pode acessar arquivos, projetos e outros aspectos.

Como abrir um modelo UML usando a API do Visual Studio

Para obter o Contexto

Declare uma ou ambas as seguintes interfaces dentro da classe de extensão:

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

O MEF (Managed Extensibility Framework) as associará às definições das quais você pode obter o diagrama atual, o armazenamento de modelo, o 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 outro modelo ou diagramas

Você pode:

Consulte também

Conceitos

Estendendo modelos e diagramas UML

Programando com a API UML