Freigeben über


Gewusst wie: Navigieren im UML-Modell

In diesem Thema werden die Haupttypen des UML-Modells vorgestellt.

Modellelemente, Modell und Modellspeicher

Die in der Microsoft.VisualStudio.Uml.Interfaces.dll der Assembly definierten Typen entsprechen den Typen, die in der UML-Spezifikation 2.1.2 definiert sind.

Die Typen in der UML-Spezifikation werden in Visual Studio Ultimate als Schnittstellen realisiert. Dem Namen jedes Typs wird der Buchstabe "I" vorangestellt. Beispiel: IElement, IClass, IInteraction, IOperation.

Alle Typen mit Ausnahme von IElement erben Eigenschaften von einem oder mehreren Obertypen (Supertypes).

Beziehungen

Eigenschaften und Beziehungen, die in der UML-Spezifikation definiert sind, werden als .NET-Eigenschaften implementiert.

Die meisten Beziehungen ermöglichen eine bidirektionale Navigation. Eine Beziehung entspricht einem Eigenschaftenpaar mit je einer Eigenschaft im Typ an beiden Enden. Beispielsweise stellen die IElement.Owner-Eigenschaft und die IElement.OwnedElements-Eigenschaft zwei Enden einer Beziehung dar. Daher ergibt dieser Ausdruck immer "true":

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

Viele Beziehungen wie IAssociation werden auch durch ein Objekt dargestellt, das über eigene Eigenschaften verfügen kann.

Wenn Sie ein Element aus dem Modell löschen, werden alle Beziehungen, in denen es vorkommt, automatisch gelöscht, und die Eigenschaft am anderen Ende wird aktualisiert.

Wenn die UML-Spezifikation einer Eigenschaft eine Multiplizität von 0..1 zuweist, kann diese den Wert null haben. Eine Multiplizität mit einem höheren Maximalwert als 1 bedeutet, dass die .NET-Eigenschaft den folgenden Typ hat: IEnumerable<Typ>.

Weitere Informationen über das Traversieren von Beziehungen finden Sie unter Gewusst wie: Navigieren in Beziehungen mit der UML-API.

Besitzstruktur

Ein Modell enthält eine Struktur von IElement-Objekten. Jedes Element verfügt über die OwnedElements-Eigenschaft und über die Owner-Eigenschaft.

In den meisten Fällen wird auf die Ziele der Owner-Eigenschaft und der OwnedElements-Eigenschaft auch von anderen Eigenschaften verwiesen, die über spezifischere Namen verfügen. So befindet sich jeder UML-Vorgang beispielsweise im Besitz einer UML-Klasse. IOperation verfügt daher über eine Class-Eigenschaft, und in jedem IOperation-Objekt gilt Class == Owner.

Das oberste Element der Struktur, das nicht über einen Besitzer verfügt, ist ein IModel. Das IModel ist in einem IModelStore enthalten und stellt dessen Root dar.

Jedes Modellelement wird mit einem Besitzer erstellt. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Elementen und Beziehungen.

Klassendiagramm: Modell, Diagramm, Form und Element

Formen und Diagramme

Elemente im UML-Modell können in einem Diagramm angezeigt werden. Je nach Diagrammtyp können unterschiedliche Untertypen von IElement anzeigen.

In einigen Fällen kann ein Element in mehr als einem Diagramm angezeigt werden. IUseCase-Elemente können z. B. über mehrere IShapes verfügen, die in einem Diagramm oder in unterschiedlichen Diagrammen angezeigt werden können.

Formen werden in einer Struktur angeordnet. Die Ränder der Struktur werden durch die ParentShape-Eigenschaft und die ChildShapes-Eigenschaft dargestellt. Diagramme sind die einzigen Formen, die keine übergeordneten Elemente haben. Die Formen auf der Oberfläche eines Diagramms bestehen aus kleineren Teilen. So weist eine Klassenform etwa Depots für Attribute und Operationen auf.

Weitere Informationen über Formen finden Sie unter Gewusst wie: Anzeigen eines Modells in Diagrammen.

Zugreifen auf das Modell in Erweiterungen

In Visual Studio-Erweiterungen, die als MEF-Komponenten definiert werden, können Sie Eigenschaften deklarieren, die Informationen aus dem Kontext importieren, in dem die Erweiterung ausgeführt wird.

Attributtyp

Bietet Zugriff auf

Weitere Informationen

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

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

Aktuelles Fokusdiagramm

Gewusst wie: Definieren eines Menübefehls in einem Modellierungsdiagramm

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

(in Microsoft.VisualStudio.Modeling.Sdk.10.0.dll)

Gruppieren von Änderungen in Transaktionen

Gewusst wie: Verknüpfen von Modellaktualisierungen mithilfe von Transaktionen

Microsoft.VisualStudio.Shell .SVsServiceProvider

(in Microsoft.VisualStudio.Shell.Immutable.10.0.dll)

Visual Studio-Host. Von dort können Sie auf Dateien, Projekte und andere Aspekte zugreifen.

Gewusst wie: Öffnen eines UML-Modells mit der Visual Studio-API

So rufen Sie den Kontext ab

Deklarieren Sie eine oder beide der folgenden Schnittstellen in der Erweiterungsklasse:

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

Das Managed Extensibility Framework (MEF) bindet diese Schnittstellen an Definitionen, aus denen Sie das aktuelle Diagramm, den Modellspeicher, das Stammobjekt usw. abrufen können:

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

So rufen Sie die aktuelle Auswahl ab

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

Zugriff auf ein anderes Modell oder Diagramme

Sie haben folgende Möglichkeiten:

Siehe auch

Weitere Ressourcen

Erweitern von UML-Modellen und Diagrammen

Programmieren mit der UML-API