Sdílet prostřednictvím


Postupy: Procházení modelu UML

Toto téma uvádí hlavní typy modelu UML.

Prvky modelu, model a úložiště modelu

Typy definované v sestavení Microsoft.VisualStudio.Uml.Interfaces.dll odpovídají typům definovaným ve Specifikaci UML, verze 2.1.2.

Typy ve specifikaci UML jsou realizovány jako rozhraní v Visual Studio Ultimate.Písmeno „I“ je přidáno před název každého typu.Například: IElement, IClass, IInteraction, IOperation.

Všechny typy s výjimkou IElement dědí vlastnosti z jednoho nebo více nadtypů.

Relace

Vlastnosti a vztahy, které jsou definovány ve specifikaci UML, jsou implementovány jako vlastnosti rozhraní .NET.

Většinu vztahů lze procházet v obou směrech.Vztah odpovídá dvojici vlastností s jednou vlastností pro typ na každém konci.Například vlastnosti IElement.Owner a IElement.OwnedElements představují dva konce vztahu.Vždy proto tento výraz bude vyhodnocen jako true:

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

Mnoho vztahů, například IAssociation, je představováno také objektem, který může mít své vlastní vlastnosti.

Pokud odstraníte z modelu prvek, je automaticky odstraněn jakýkoli vztah, ve kterém se účastní, a vlastnost na druhém konci je aktualizována.

Pokud specifikace UML přiřadí vlastnosti násobnost 0..1, může mít hodnotu null.Násobnost s maximem větším než 1 znamená, že má vlastnost .NET typ: IEnumerable<Type>.

Další informace o překračování vztahů naleznete v tématu Postupy: Procházení vztahů pomocí rozhraní API UML.

Strom vlastnictví

Model obsahuje strom objektů IElement.Každý prvek má vlastnosti OwnedElements a Owner.

Ve většině případů cíle vlastností Owner a OwnedElements jsou také odkazovány jinými vlastnostmi, které mají specifičtější názvy.Například každá operace UML je vlastněná třídou UML.Proto IOperation má vlastnost s názvem Class a v každém objektu IOperationClass == Owner.

Nejvyšší prvek stromu, který nemá vlastníka, je IModel.IModel je součástí IModelStore, v níž je Root.

Každý prvek modelu je vytvořen s vlastníkem.Další informace naleznete v tématu Postupy: Vytváření elementů a vztahů.

Diagram třídy: Model, Diagram, tvar a Element

Tvary a diagramy

V diagramech lze zobrazit prvky v modelu UML.Různé typy diagramů mohou zobrazit různé podtypy IElement.

V některých případech se může prvek zobrazit ve více diagramech.IUseCase prvek může mít například několik IShapes, které lze zobrazit na jednom diagramu nebo různých diagramech.

Tvary jsou uspořádány ve stromové struktuře.Okraje stromu jsou představovány vlastnostmi ParentShape a ChildShapes.Diagramy jsou pouze tvary, které nemají nadřazené položky.Tvary na povrchu diagramu se skládají z menších částí.Například tvar třídy má oddíly pro atributy a operace.

Další informace o tvarech naleznete v části Postupy: Zobrazení modelu v diagramech.

Přístup k modelu v rozšířeních

V rozšířeních Visual Studio definovaných jako komponenty MEF můžete deklarovat vlastnosti, které importují informace z kontextu, ve kterém se spustí rozšíření.

Typ atributu

K čemu vám to poskytuje přístup

Další informace

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

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

Aktuální diagram výběru.

Postupy: Definování příkazu nabídky v diagramu modelování

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

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

Umožňuje seskupit změny do transakcí.

Postupy: Propojení aktualizací modelů pomocí transakcí

Microsoft.VisualStudio.Shell .SVsServiceProvider

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

Hostitelská aplikace Visual Studio.Odtud lze přistupovat k souborům, projektům a jiným aspektům.

Postupy: Otevření modelu UML pomocí rozhraní API sady Visual Studio

Získání Kontextu

Deklarace jednoho nebo obou následujících rozhraní uvnitř vaší třídy rozšíření:

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

Managed Extensibility Framework (MEF) je naváže na definice, z nichž můžete získat aktuální diagram, úložiště modelu, kořenový objekt a tak dále:

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

Získání aktuálního výběru

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

Přístup k jiným modelům nebo diagramům

Můžete:

Viz také

Koncepty

Rozšiřování modelů a diagramů UML

Programování s rozhraním API UML