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.
Para obter um resumo dos tipos de modelo, consulte Tipos de elemento de modelo.
Para obter detalhes completos da API, consulte Referência de API de extensibilidade de modelagem UML.
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.
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. |
|
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. |
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:
Use Visual Studio o barramento de modelo para criar links entre os 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 no Visual Studio interface do usuário. Para obter mais informações, consulte Como: Um modelo UML no código do programa de leitura..
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.