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.
Aby uzyskać informacje na temat podsumowania typów modeli, zobacz Typy elementów modelu.
Aby uzyskać pełne informacje na temat interfejsu API, zobacz Wykaz interfejsów API dla rozszerzalności modelowania UML.
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.
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. |
|
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. |
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:
Użyj Visual Studio modelu autobusu do tworzenia łączy między elementami w różnych modelach.Aby uzyskać więcej informacji, zobacz Porady: integrowanie modeli UML z innymi modelami i narzędziami.
Załaduj projekt modelowania i diagramy w trybie tylko do odczytu bez uwidaczniania tego w interfejsie użytkownika Visual Studio.Aby uzyskać więcej informacji, zobacz Porady: odczytywanie modelu UML w kodzie programu.
Otwieranie projektu modelowania i jego diagramów w Visual Studio, a następnie uzyskanie dostęp do zawartości.Aby uzyskać więcej informacji, zobacz Porady: otwieranie modelu UML za pomocą Visual Studio API.