Gewusst wie: Erstellen von Elementen und Beziehungen
Im Programmcode für eine Erweiterung von Visual Studio Ultimate können Sie Elemente und Beziehungen erstellen und löschen.
Erstellen eines Modellelements
Namespaceimporte
Sie müssen die folgenden using-Anweisungen einschließen.
Die Erstellungsmethoden werden als Erweiterungsmethoden in diesem Namespace definiert:
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
Abrufen des Besitzers des zu erstellenden Elements
Ein Modell bildet eine einzelne Struktur, damit jedes Element, mit Ausnahme des Modellstamms, einen Besitzer hat.Der Modellstamm hat den Typ IModel, der ein Typ von IPackage ist.
Wenn Sie ein Element erstellen, das in einem bestimmten Diagramm angezeigt wird, z. B. im aktuellen Diagramm des Benutzers, sollten Sie es normalerweise in dem Paket erstellen, das mit diesem Diagramm verknüpft ist.Beispiele:
IPackage linkedPackage = Context.CurrentDiagram.Element as IPackage;
In dieser Tabelle wird der Besitz von allgemeinen Modellelementen zusammengefasst:
Zu erstellendes Element |
Besitzer |
---|---|
IActor, IUseCase, IComponent, IClass, IInterface, IEnumeration IActivity, IInteraction |
IPackage, IModel |
IAttribute, IOperation |
IClass, IInterface |
IPart, IPort |
IComponent |
IAction, IObjectNode |
IActivity |
ILifeline, IMessage, ICombinedFragment |
IInteraction |
Aufrufen der "Create"-Methode auf dem Besitzerelement
Der Methodenname hat die folgende Form: CreateOwnedType().Beispiele:
IUseCase usecase1 = linkedPackage.CreateUseCase();
Einige Typen verfügen über komplexere Erstellungsmethoden, besonders in Sequenzdiagrammen.Informationen finden Sie unter Gewusst wie: Bearbeiten von Sequenzdiagrammen mit der UML-API.
Für einige Typen des Elements können Sie den Besitzer eines Elements während seiner Lebensdauer mithilfe von SetOwner(newOwner) ändern.
Festlegen des Namens und anderer Eigenschaften
usecase1.Name = "user logs in";
Beispiel
using Microsoft.VisualStudio.Uml.Classes;
using Microsoft.VisualStudio.Uml.Extensions;
...
void InstantiateObserverPattern (IPackage package, string namePrefix)
{ IInterface observer = package.CreateInterface();
observer.Name = namePrefix + "Observer";
IOperation operation = observer.CreateOperation();
operation.Name = "Update";
IClass subject = package.CreateClass();
subject.Name = namePrefix + "Subject"; ...
Erstellen einer Zuordnung
So erstellen Sie eine Zuordnung
Rufen Sie den Besitzer der Zuordnung ab. Dabei handelt es sich normalerweise um das Paket oder Modell, in dem das Quellende der Beziehung enthalten ist.
Rufen Sie die erforderliche "Create"-Methode auf dem Besitzerelement auf.
Legen Sie die Eigenschaften der Beziehung fest, z. B. ihren Namen.
Beispiele:
IAssociation association = subject.Package.CreateAssociation(subject, observer); association .Name = "Observes";
Legen Sie die Eigenschaften der beiden Enden der Beziehung fest.Es sind immer zwei MemberEnds vorhanden.Beispiele:
association .MemberEnds[0].Name = "subject"; // role name association .MemberEnds[1].Name = "observers"; // role name association .MemberEnds[1].SetBounds("0..*"); // multiplicity defaults to "1" association.MemberEnds[0].Aggregation = AggregationKind.Composite;
Erstellen einer Generalisierung
IGeneralization generalization =
subclass.CreateGeneralization(superClass);
Löschen eines Elements, einer Beziehung oder einer Generalisierung aus dem Modell
anElement.Delete();
Wenn Sie ein Element aus einem Modell löschen, gilt Folgendes:
Jede Beziehung, die mit dem Element verknüpft ist, wird ebenfalls gelöscht.
Jede Form, die das Element im Diagramm dargestellt hat, wird ebenfalls gelöscht.