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ů.
Shrnutí typů modelu viz Typy prvků modelu.
Úplné podrobnosti o API naleznete v části Referenční dokumentace k rozhraní API pro rozšíření modelování UML.)
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ů.
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. |
|
Microsoft.VisualStudio.Modeling.ExtensionEnablement .ILinkedUndoContext (v Microsoft.VisualStudio.Modeling.Sdk.12.0.dll) |
Umožňuje seskupit změny do 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:
Použijte sběrnici modelu Visual Studio k vytvoření vazeb mezi prvky v různých modelech.Další informace naleznete v tématu Postupy: Integrace modelů UML s jinými modely a nástroji.
Načtěte projekt modelování a diagramy v režimu jen pro čtení bez zviditelnění v rozhraní Visual Studio.Další informace naleznete v tématu Postupy: Čtení modelu UML v programovém kódu.
Otevřete projekt modelování a jeho diagramy v Visual Studioa pak pracujte s jeho obsahem.Další informace naleznete v tématu Postupy: Otevření modelu UML pomocí rozhraní API sady Visual Studio.