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.
Para obter um resumo dos tipos de modelo, consulte Tipos de elemento de modelo.
Para obter detalhes completos da API, consulte Referência da API de extensibilidade de modelagem UML.
Relacionamentos
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.
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 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.
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. |
|
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. |
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) 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>) {...}
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:
Use Visual Studio do modelo de barramento para criar vínculos entre elementos em diferentes modelos.Para obter mais informações, consulte Como: integrar modelos UML com outras ferramentas e modelos.
Carregar um projeto de modelagem e diagramas no modo somente leitura, sem torná-lo visível na Visual Studio interface do usuário.Para obter mais informações, consulte Como: ler um modelo UML no código de programa.
Abra um projeto de modelagem e seus diagramas em Visual Studioe depois acessar o conteúdo.Para obter mais informações, consulte Como: abrir um modelo UML usando a API de Visual Studio.