Sdílet prostřednictvím


Jak: navigace modelu UML

Toto téma představuje hlavní typy modelu UML.

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

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

Typy specifikace UML jsou realizovány jako rozhraní v Visual Studio Ultimate.Písmeno "I" je před název každého typu.For example: IElement, IClass, IInteraction, IOperation.

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

Ee330925.collapse_all(cs-cz,VS.110).gifVztahy

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

Většina vztahy jsou snadnou navigaci v obou směrech.Vztah odpovídá dvojici vlastnosti s jednu vlastnost typu na každém konci.Například vlastnosti IElement.Owner a IElement.OwnedElements představují oba konce vztah.Proto tento výraz se vyhodnotí vždy na hodnotu true:

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

Mnoho vztahů, například IAssociation, představují také objekt, který může mít své vlastní vlastnosti.

Prvek odstraníte z modelu, je automaticky odstraněny všechny relace, ve které se účastní a vlastnost na druhém konci je aktualizován.

Pokud specifikace UML přiřadí velkému 0..1 vlastnost, může mít hodnotu null.Násobnost maximální větší než 1 znamená, že.NET vlastnosti má typ: IEnumerable<typu>.

Další informace o procházení vztahy, viz Jak: navigace vztahy s UML API.

Ee330925.collapse_all(cs-cz,VS.110).gifVlastnictví stromu

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

Ve většině případů cílů Owner a OwnedElements vlastnosti také odkazují jiné vlastnosti, které mají zvláštní názvy.Například každá operace UML je vlastněna třídy UML.Proto IOperation má vlastnost pojmenovanou Classa v každém IOperation objektu, Class == Owner.

Vrchní element stromu má bez vlastníka, je IModel.Je součástí IModel IModelStore, v níž je Root.

Každý prvek modelu je vytvořen s vlastníka.Další informace naleznete v tématu Jak: vytvoření prvky a vztahy.

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

Tvary a diagramy

Prvky v modelu UML lze zobrazit v diagramech.Různé typy diagramů můžete zobrazit různé podtypy IElement.

V některých případech se může zobrazit prvek v diagramu více.Prvek IUseCase může mít například několik IShapes, které se mohou objevit na jedné diagram nebo různé diagramy.

Obrazce jsou uspořádány ve stromové struktuře.Vlastnosti buňky ParentShape a ChildShapes představují okraje stromu.Diagramy jsou pouze obrazce, které nemají rodiče.Obrazce na povrchu diagramu jsou složeny z menší části.Například obrazec Třída má prostory pro atributy a operace.

Další informace o obrazcích Jak: zobrazení v diagramech modelu.

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

V Visual Studio definován jako součásti MEF rozšíření, můžete deklarovat vlastnosti, které importovat informace z kontextu, ve kterém je spuštěno rozšíření.

Typ atributu

Co to poskytuje přístup k

Další informace

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

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

Aktuální zaměření diagramu.

Postup: definování příkazu nabídky diagramu modelování

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

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

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

Jak: aktualizace modelu odkaz pomocí transakcí

Microsoft.VisualStudio.Shell.SVsServiceProvider

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

The host Visual Studio.Zde můžete přistupovat, soubory, projekty a další aspekty.

Jak: Otevřete UML Model pomocí rozhraní API aplikace Visual Studio

Ee330925.collapse_all(cs-cz,VS.110).gifZískání kontextu

Prohlašuji, že jeden nebo oba následující rozhraní uvnitř třídy rozšíření:

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

Rámec spravované rozšiřitelnost (MEF) vytvoří vazbu těchto definic, ze kterých můžete získat aktuální diagram, úložiště modelu, kořenový objekt a podobně:

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(cs-cz,VS.110).gifZískat aktuální výběr

// 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ý model nebo diagramy

Můžete:

Viz také

Koncepty

Rozšíření modelů UML a diagramů

Programování v rozhraní API UML