Comment : créer des éléments et des relations
Dans le code de programme d'une extension de Visual Studio Ultimate, vous pouvez créer et supprimer des éléments et des relations.
Création d'un élément de modèle
Importations d'espaces de noms
Vous devez inclure les instructions using suivantes.
Les méthodes de création sont définies comme des méthodes d'extension dans cet espace de noms :
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
Obtention du propriétaire de l'élément que vous souhaitez créer
Un modèle forme une arborescence unique afin que chaque élément dispose d'un propriétaire, à l'exception de la racine modèle. La racine modèle est de type IModel, qui est un type d'IPackage.
Si vous créez un élément qui sera affiché dans un diagramme particulier (par exemple, le diagramme actuel de l'utilisateur), vous devez généralement le créer dans le package lié à ce diagramme. Par exemple :
IPackage linkedPackage = Context.CurrentDiagram.Element as IPackage;
Ce tableau récapitule la propriété d'éléments de modèles communs :
Élément à créer |
Propriétaire |
---|---|
IActor, IUseCase, IComponent, IClass, IInterface, IEnumeration IActivity, IInteraction |
IPackage, IModel |
IAttribute, IOperation |
IClass, IInterface |
IPart, IPort |
IComponent |
IAction, IObjectNode |
IActivity |
ILifeline, IMessage, ICombinedFragment |
IInteraction |
Appel de la méthode de création sur le propriétaire
Le nom de méthode se présente comme suit : CreateTypeDétenu (). Par exemple :
IUseCase usecase1 = linkedPackage.CreateUseCase();
Certains types disposent de méthodes de création plus complexes, particulièrement dans les diagrammes de séquences. Consultez Comment : modifier des diagrammes de séquence à l'aide de l'API UML.
Pour certains types d'éléments, vous pouvez modifier le propriétaire d'un élément tout au long de sa durée de vie, grâce à SetOwner(newOwner).
Définition du nom et d'autres propriétés
usecase1.Name = "user logs in";
Exemple
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"; ...
Création d'une association
Pour créer une association
Obtenez le propriétaire de l'association, qui est généralement le package ou le modèle contenant l'extrémité source de la relation.
Appelez la méthode de création requise sur le propriétaire.
Définissez les propriétés de la relation comme son nom.
Par exemple :
IAssociation association = subject.Package.CreateAssociation(subject, observer); association .Name = "Observes";
Définissez les propriétés de chaque extrémité de la relation. Il existe toujours deux MemberEnds. Par exemple :
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;
Création d'une généralisation
IGeneralization generalization =
subclass.CreateGeneralization(superClass);
Suppression d'un élément, d'une relation ou d'une généralisation du modèle
anElement.Delete();
Lorsque vous supprimez un élément d'un modèle :
Chaque relation à laquelle il est lié est également supprimée.
Chaque forme qui l'a représenté dans un diagramme est également supprimée.