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.
Pour obtenir un résumé des types de modèles, consultez Types d'éléments de modèles.
Pour obtenir des informations complètes sur l'API, consultez Référence des API pour l'extensibilité de la modélisation UML.
Relations
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.
Arborescence 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.
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.10.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.10.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 |
Pour 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>) {...}
Pour 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 :
Utiliser Visual Studio ModelBus pour créer des liens entre des éléments inclus dans des modèles différents. Pour plus d'informations, consultez Comment : intégrer des modèles UML à d'autres modèles et outils.
Charger un projet de modélisation et des diagrammes en lecture seule sans le rendre visible dans l'interface utilisateur de Visual Studio. Pour plus d'informations, consultez Comment : lire un modèle UML dans le code de programme.
Ouvrir un projet de modélisation et ses diagrammes dans Visual Studio, puis accéder au contenu. Pour plus d'informations, consultez Comment : ouvrir un modèle UML à l'aide de l'API Visual Studio.