Partager via


Comment : naviguer dans le modèle UML

Cette rubrique présente les principaux types de modèles UML.

Éléments de modèle, modèle et magasin de modèles

Les types définis dans l'assembly Microsoft.VisualStudio.Uml.Interfaces.dll correspondent aux types définis dans la Spécification UML, version 2.1.2

Les types de la spécification UML sont réalisés sous la forme d'interfaces dans Visual Studio Ultimate.La lettre « I » est ajoutée au début du nom de chaque type.Par exemple : IElement, IClass, IInteraction, IOperation.

À l'exception d'IElement, tous les types héritent des propriétés d'un ou de plusieurs supertypes.

Ee330925.collapse_all(fr-fr,VS.110).gifRelations

Les propriétés et les relations définies dans la spécification UML sont implémentées en tant que propriétés .NET.

Il est possible de parcourir la plupart des relations dans les deux directions.Une relation correspond à une paire de propriétés, avec une propriété sur le type à chaque extrémité.Par exemple, les propriétés IElement.Owner et IElement.OwnedElements représentent deux extrémités d'une relation.Par conséquent, cette expression sera toujours égale à True :

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

De nombreuses relations, telles qu'IAssociation, sont également représentées par un objet qui peut avoir ses propres propriétés.

Si vous supprimez un élément du modèle, toute relation à laquelle il participe est supprimée automatiquement, et la propriété à l'autre extrémité est mise à jour.

Si la spécification UML assigne une multiplicité de 0..1 à une propriété, elle peut avoir la valeur null.Une multiplicité dont la limite maximale est supérieure à 1 signifie que la propriété .NET présente le type : IEnumerable<Type>.

Pour plus d'informations sur le parcours des relations, consultez Comment : naviguer parmi les relations avec l'API UML.

Ee330925.collapse_all(fr-fr,VS.110).gifArborescence de propriété

Un modèle contient une arborescence d'objets IElement.Chaque élément a des propriétés OwnedElements et Owner.

Dans la plupart des cas, les cibles des propriétés Owner et OwnedElements sont également référencées par d'autres propriétés qui ont des noms plus spécifiques.Par exemple, chaque opération UML est possédée par une classe UML.Par conséquent, IOperation a une propriété nommée Class, et dans chaque objet IOperation, Class == Owner.

L'élément le plus haut de l'arborescence, qui n'a aucun Propriétaire, est un IModel.L'IModel est contenu dans un IModelStore, dans lequel se trouve la Root.

Chaque élément de modèle est créé avec un Propriétaire.Pour plus d'informations, consultez Comment : créer des éléments et des relations.

Diagramme de classes : modèle, diagramme, forme et élément

Formes et diagrammes

Les éléments dans le modèle UML peuvent être affichés sur les diagrammes.Les différents types de diagrammes peuvent afficher différents sous-types d'IElement.

Dans certains cas, un élément peut apparaître sur plusieurs diagrammes.Par exemple, un élément IUseCase peut avoir plusieurs IShapes, qui peuvent apparaître sur un ou différents diagrammes.

Les formes sont organisées dans une arborescence.Les bords de l'arborescence sont représentés par les propriétés ParentShape et ChildShapes.Les diagrammes sont les seules formes qui n'ont pas de parents.Les formes sur la surface d'un diagramme sont composées de plus petites parties.Par exemple, une forme de classe a des compartiments pour les attributs et les opérations.

Pour plus d'informations sur les formes, consultez Comment : afficher un modèle sur des diagrammes.

Accéder au modèle dans les extensions

Dans les extensions Visual Studio définies comme composants MEF, vous pouvez déclarer des propriétés qui importent les informations à partir du contexte dans lequel l'extension s'exécute.

Type d'attribut

Octroi d'accès à

Complément d'information

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation

.IDiagramContext

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

Diagramme de focus actuel.

Comment : définir une commande de menu sur un diagramme de modélisation

Microsoft.VisualStudio.Modeling.ExtensionEnablement

.ILinkedUndoContext

(dans Microsoft.VisualStudio.Modeling.Sdk.11.0.dll)

Vous autorise à regrouper les modifications dans des transactions.

Comment : lier des mises à jour de modèles à l'aide de transactions

Microsoft.VisualStudio.Shell .SVsServiceProvider

(dans Microsoft.VisualStudio.Shell.Immutable.11.0.dll)

Hôte Visual Studio.De là vous pouvez accéder aux fichiers, aux projets et à d'autres aspects.

Comment : ouvrir un modèle UML à l'aide de l'API Visual Studio

Ee330925.collapse_all(fr-fr,VS.110).gifPour obtenir le contexte

Déclarez une ou les deux interfaces suivantes à l'intérieur de votre classe d'extension :

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

Managed Extensibility Framework (MEF) les liera à des définitions à partir desquelles vous pouvez obtenir le diagramme actuel, le magasin de modèles, l'objet racine, etc. :

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

Ee330925.collapse_all(fr-fr,VS.110).gifPour obtenir la sélection actuelle

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

Accès à un autre modèle ou à d'autres diagrammes

Vous pouvez effectuer l'une des actions suivantes :

Voir aussi

Concepts

Extension de modèles et de diagrammes UML

Programmation à l'aide de l'API UML