Udostępnij za pośrednictwem


Porady: nawigowanie po modelu UML

Ten temat wprowadza główne typy modelu UML.

Elementy modelu, Model i Magazynu modeli

Typy zdefiniowane w zestawie Microsoft.VisualStudio.Uml.Interfaces.dll odpowiadają typom zdefiniowanym w specyfikacji UML, wersja 2.1.2.

Typy w specyfikacji UML są realizowane jako interfejsy w Visual Studio Ultimate.Litera "I" jest dołączona do nazwy każdego typu.Na przykład: IElement, IClass, IInteraction, IOperation.

Wszystkie typy z wyjątkiem IElement dziedziczą właściwości z jednego lub kilku nadtypów.

Relacje

Właściwości i relacje, które są zdefiniowane w specyfikacji UML są implementowane jako właściwości .NET.

Większość relacje można nawigować w obu kierunkach.Relacja odpowiada parze właściwości, z jedną właściwością w typie na każdym końcu.Na przykład, właściwości IElement.Owner i IElement.OwnedElements stanowią dwa końce relacji.W związku z tym to wyrażenie będzie zawsze przyjmowało wartość true:

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

Wiele związków, takich jak IAssociation, również jest reprezentowanych przez obiekt, który może mieć własne właściwości.

Jeśli usuniesz element z modelu, jakakolwiek relacja, w której bierze udział jest automatycznie usuwana, a właściwość na drugim końcu jest aktualizowana.

Jeśli specyfikacja UML przypisuje liczebność 0..1 do właściwości, może mieć wartość null.Liczebność z wartością maksymalną większą niż 1 oznacza, że właściwość .NET jest typu: IEnumerable<Type>.

Aby uzyskać więcej informacji dotyczących nakierowanych relacji, zobacz Porady: nawigowanie po relacjach z API UML.

Drzewo własności

Model zawiera drzewo z obiektami IElement.Każdy element ma właściwości OwnedElements i Owner.

W większości przypadków obiekty docelowe właściwości Owner i OwnedElements odnoszą się również do innych właściwości, które mają bardziej szczegółowe nazwy.Na przykład każda operacja UML jest własnością klasy UML.Dlatego IOperation ma właściwość o nazwie Class i w każdym IOperation obiektu, Class == Owner.

Jest elementem najwyższego drzewa, która nie ma właściciela, IModel.IModel jest zawarty w IModelStore, w którym jest Root.

Każdy element modelu jest tworzony z właścicielem.Aby uzyskać więcej informacji, zobacz Porady: tworzenie elementów i relacji.

Diagram klas: modelu, diagramu, kształt i Element

Kształty i Diagramy

Elementy w modelu UML mogą być wyświetlane na diagramach.Różne rodzaje diagramów mogą wyświetlić różne podtypy IElement.

W niektórych przypadkach element może się pojawić na więcej niż jednym diagramie.Na przykład element IUseCase może mieć kilka elementów IShapes, które mogą być wyświetlane na jednym diagramie lub różnych diagramach.

Kształty są rozmieszczone w drzewie.Krawędzie drzewa są reprezentowane przez właściwości ParentShape i ChildShapes.Diagramy są jedynymi kształtami, które nie mają elementów nadrzędnych.Kształty znajdujące się na powierzchni diagramu składają się z mniejszych części.Na przykład kształt klasy posiada przedziały dla atrybutów i operacji.

Aby uzyskać więcej informacji na temat zdarzeń, zobacz Porady: wyświetlanie modelu na diagramach.

Uzyskaj dostęp do modelu w rozszerzeniach

W rozszerzeniach Visual Studio zdefiniowanych jako składniki MEF, można zadeklarować właściwości, które importują informacje z kontekstu, w którym jest uruchamiane rozszerzenie.

Typ atrybutu.

Do czego to zapewnia dostęp

Więcej informacji

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

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

Bieżący diagram fokusowy.

Porady: definiowanie polecenia menu na diagramie modelowania

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

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

Zezwala na pogrupowanie zmian w transakcje.

Porady: łączenie aktualizacji modeli za pomocą transakcji

Microsoft.VisualStudio.Shell.SVsServiceProvider

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

Host Visual Studio.Stamtąd można uzyskać dostęp do plików, projektów i innych aspektów.

Porady: otwieranie modelu UML za pomocą Visual Studio API

Aby uzyskać Kontekst

Deklaruj jeden lub oba z następujących interfejsów wewnątrz klasy rozszerzenia:

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

Managed Extensibility Framework (MEF), będą wiązać te definicje, w których można uzyskać bieżący diagram, magazyn modeli, obiekt główny i tak dalej:

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

Aby uzyskać bieżące zaznaczenie

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

Uzyskiwanie dostępu do innego modelu lub diagramów

Możesz:

Zobacz też

Koncepcje

Rozszerzanie diagramów i modeli UML

Programowanie za pomocą API UML