Procedura: creare elementi e relazioni
Nel codice programma di un'estensione di Visual Studio Ultimate è possibile creare ed eliminare elementi e relazioni.
Creare un elemento del modello
Importazioni degli spazi dei nomi
È necessario includere le istruzioni using seguenti.
I metodi di creazione sono definiti come metodi di estensione in questo spazio dei nomi:
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
Ottenere il proprietario dell'elemento che si desidera creare
Un modello forma una singola struttura ad albero, in modo che ogni elemento disponga di un solo proprietario, ad eccezione della radice del modello. Il tipo della radice del modello è IModel, ovvero un tipo IPackage.
Se si crea un elemento che verrà visualizzato in un diagramma specifico, ad esempio il diagramma corrente dell'utente, è necessario in genere crearlo nel pacchetto collegato a tale diagramma. Ad esempio:
IPackage linkedPackage = Context.CurrentDiagram.Element as IPackage;
Nella tabella seguente viene riepilogata la proprietà dei comuni elementi del modello:
Elemento da creare |
Proprietario |
---|---|
IActor, IUseCase, IComponent, IClass, IInterface, IEnumeration IActivity, IInteraction |
IPackage, IModel |
IAttribute, IOperation |
IClass, IInterface |
IPart, IPort |
IComponent |
IAction, IObjectNode |
IActivity |
ILifeline, IMessage, ICombinedFragment |
IInteraction |
Richiamare il metodo di creazione del proprietario
Il formato del nome del metodo è: CreateTipoProprietario(). Ad esempio:
IUseCase usecase1 = linkedPackage.CreateUseCase();
Alcuni tipi dispongono di metodi di creazione più complessi, in particolare nei diagrammi di sequenza. Vedere Procedura: modificare i diagrammi di sequenza tramite l'API UML.
Per alcuni tipi di elemento è possibile modificare il proprietario di un elemento nel corso della relativa durata utilizzando SetOwner(newOwner).
Impostare il nome e altre proprietà
usecase1.Name = "user logs in";
Esempio
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"; ...
Creare un'associazione
Per creare un'associazione
Ottenere il proprietario dell'associazione che in genere è il pacchetto o il modello contenente l'estremità di origine della relazione.
Richiamare il metodo di creazione richiesto del proprietario.
Impostare le proprietà della relazione, ad esempio il nome.
Ad esempio:
IAssociation association = subject.Package.CreateAssociation(subject, observer); association .Name = "Observes";
Impostare le proprietà di ogni estremità della relazione. Sono sempre presenti due MemberEnds. Ad esempio:
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;
Creare una generalizzazione
IGeneralization generalization =
subclass.CreateGeneralization(superClass);
Eliminare un elemento, una relazione o una generalizzazione dal modello
anElement.Delete();
Quando si elimina un elemento da un modello:
Viene eliminata anche ogni relazione ad esso collegata.
Viene eliminata anche ogni forma che lo rappresentava in un diagramma.