Types de relations UML : association, dépendance, généralisation

⚡ Résumé intelligent

Les relations UML relient les aspects structurels, comportementaux et de groupe.ping Ce document présente les éléments d'un modèle, illustrant la dépendance entre les objets lors de leur exécution. Il explique les concepts d'association, de dépendance, de généralisation, de réalisation, de composition et d'agrégation, en fournissant des notations et des exemples concrets pour chaque type.

  • 🔗 Association: Un lien structurel où les objets se connectent, avec des contraintes et une multiplicité définissant le nombre de participants.
  • ➡️ Dépendance: Une relation à sens unique où une modification du fournisseur peut affecter le client dépendant.
  • 🌳 Généralisation: Une relation parent-enfant qui met en œuvre l'héritage entre une entité générale et une entité spécialisée.
  • 🧩 La concrétisation: Une interface contract où une entité définit la responsabilité et une autre la met en œuvre, sous forme canonique ou élidée.
  • 💠 Composition et agrégation : Relations entre le tout et les parties ; la composition détruit les parties par le tout, tandis que l'agrégation permet aux parties de lui survivre.

Types de relations UML

Qu’est-ce que la relation UML ?

Relations en UML sont utilisées pour représenter un lien entre des facteurs structurels, comportementaux ou de groupeping Un élément est aussi appelé lien ; il décrit comment deux éléments ou plus peuvent être liés entre eux lors de l’exécution d’un système. Les types de relations UML sont : association, dépendance, généralisation et réalisation.

Étudions-les en détail

Types de relations entre diagrammes de classes UML

Relations des diagrammes de classes UML

Association

C'est un ensemble de liens qui relient les éléments du modèle UML. Il définit également combien d’objets participent à cette relation.

Dépendance

Dans une relation de dépendance, comme son nom l’indique, deux ou plusieurs éléments dépendent les uns des autres. Dans ce type de relation, si nous apportons une modification à un élément particulier, il est alors probablement possible que tous les autres éléments soient également affectés par le changement.

Généralisation

On parle aussi de relation parent-enfant. En généralisation, un élément est une spécialisation d’un autre composant général. Il peut lui être substitué. Il est principalement utilisé pour représenter l’héritage.

Réalisation

Dans une relation de réalisation d'UML, une entité dénote une certaine responsabilité qui n'est pas mise en œuvre par elle-même ni par l'autre entité qui les met en œuvre. Cette relation se retrouve principalement dans le cas de interfaces.

Association

Il s'agit d'une relation structurelle qui représente que les objets peuvent être connectés ou associés à un autre objet à l'intérieur du système. Les contraintes suivantes peuvent être appliquées à la relation d'association.

  • {implicite} – Les contraintes implicites précisent que la relation n'est pas manifeste ; il est basé sur un concept.
  • {commandé} – Les contraintes ordonnées spécifient que l'ensemble des objets à une extrémité d'une association est d'une manière spécifique.
  • {changeable} – La contrainte modifiable spécifie que la connexion entre divers objets du système peut être ajoutée, supprimée et modifiée selon les exigences.
  • {addOnly} – Il précise que les nouvelles connexions peuvent être ajoutées à partir d'un objet qui se situe à l'autre extrémité d'une association.
  • {congelé} – Il précise que lorsqu'un lien est ajouté entre deux objets, alors il ne peut pas être modifié tant que la contrainte gelée est active sur le lien donné ou une connexion.

Nous pouvons également créer une classe qui possède des propriétés d'association ; on l'appelle classe d'association.

Association réflexive

L'association réflexive est un sous-type de relation d'association en UML. Dans une association réflexive, les instances d'une même classe peuvent être liées les unes aux autres. Une instance d’une classe est également appelée un objet.

L'association réflexive indique qu'un lien ou une connexion peut être présent au sein des objets d'une même classe.

Prenons un exemple de classe fruit. La classe des fruits comprend deux instances, comme la mangue et la pomme. L'association réflexive indique qu'un lien entre la mangue et la pomme peut être présent car ce sont des instances de la même classe, comme le fruit.

Association dirigée

Comme son nom l’indique, l’association dirigée est liée à la direction du flux au sein des classes d’association.

Dans une association dirigée, le flux est dirigé. L'association d'une classe à une autre classe s'effectue dans un seul sens.

Il est indiqué par une ligne continue avec une pointe de flèche.

Exemple :

On peut dire qu'il existe une relation d'association dirigée entre un serveur et un client. Un serveur peut traiter les requêtes d'un client. Ce flux est unidirectionnel, il circule uniquement du serveur vers le client. Par conséquent, une relation d’association dirigée peut être présente au sein des serveurs et des clients d’un système.

Dépendance

En utilisant une relation de dépendance dans UML, on peut comprendre comment diverses choses à l'intérieur d'un système particulier dépendent les unes des autres. La dépendance est utilisée pour décrire la relation entre divers éléments UML qui dépendent les uns des autres.

Stéréotypes

  • "lier" – Bind est une contrainte qui spécifie que la source peut initialiser le modèle à un emplacement cible, en utilisant les paramètres ou les valeurs fournis.
  • "dériver" – Cela signifie que l'emplacement d'un objet source peut être calculé à partir de l'objet cible.
  • «ami» – Il précise que la source a une visibilité unique dans l'objet cible.
  • "exemple de" – Il spécifie que l'instance d'un classificateur cible est l'objet source.
  • «instancier» – Il spécifie que l'objet source est capable de créer des instances d'un objet cible.
  • "affiner" – Il précise que l'objet source possède des valeurs absolues exceptionnellestraction que celle de l'objet cible.
  • "utiliser" – Il est utilisé lorsque des packages sont créés en UML. Le stéréotype d'utilisation décrit que les éléments d'un package source peuvent également être présents à l'intérieur du package cible. Il décrit que le package source utilise certains éléments d'un package cible.
  • "remplaçant" – précise que le client peut se substituer au fournisseur au moment de l'exécution.
  • "accéder" – Il précise que le package source accède aux éléments du package cible qui est également appelée fusion privée.
  • "Importer" – Il spécifie que la cible peut importer l'élément d'un package source tel qu'il est défini dans le cible qui est également appelée fusion publique.
  • "permis" – précise que l'élément source a accès à l'élément fournisseur quelle que soit la visibilité déclarée du fournisseur.
  • "étendre" – Vous aide à spécifier que la cible peut étendre le comportement de l'élément source.
  • "inclure" – Vous permet de spécifier l'élément source qui peut être inclus dans le comportement d'un autre élément à un emplacement spécifié. (identique à un appel de fonction en c/c++)
  • "devenir" – Il précise que la cible est similaire à la source avec des valeurs et des rôles différents.
  • "appel" – Il spécifie que la source peut invoquer une méthode objet cible.
  • "copie" – Il précise que l'objet cible est indépendant, copie d'un objet source.
  • "paramètre" – le fournisseur est un paramètre des opérations du client.
  • "envoyer" – le client est une opération qui envoie au fournisseur une cible non spécifiée.

Stéréotypes au sein de la machine d’État

  • "envoyer" – Spécifie que l'opération source envoie l'événement cible.

Généralisation

C'est une relation entre une entité générale et une entité unique présente à l'intérieur du système.

Dans une relation de généralisation, le concept orienté objet appelé héritage peuvent être mises en œuvre. Une relation de généralisation existe entre deux objets, également appelés entités ou choses. Dans une relation de généralisation, une entité est un parent et une autre est un enfant. Ces entités peuvent être représentées par héritage.

En cas d'héritage, un enfant de n'importe quel parent peut accéder, mettre à jour ou hériter de la fonctionnalité spécifiée dans l'objet parent. Un objet enfant peut s'ajouter ses fonctionnalités et hériter de la structure et du comportement d'un objet parent.

Ce type de relation est collectivement appelé relation de généralisation.

Les stéréotypes et leurs contraintes

  • "mise en œuvre" – Ce stéréotype est utilisé pour représenter que l'entité enfant est implémentée par l'entité parent en héritant de la structure et du comportement d'un objet parent sans enfreindre les règles. À noter: Ce stéréotype est largement utilisé dans un seul héritage.

La relation de généralisation contient des contraintes telles que complète, incomplète pour vérifier si toutes les entités enfants sont incluses ou non dans la relation.

Réalisation

Dans une relation de réalisation d'UML, une entité dénote une certaine responsabilité qui n'est pas mise en œuvre par elle-même ni par l'autre entité qui les met en œuvre. Cette relation se retrouve principalement dans le cas de interfaces.

La réalisation peut être représentée de deux manières :

  • L'utilisation d'un Forme canonique
  • Utilisation de l'année forme élidée
Réalisation en UML
Réalisation en UML

Dans le diagramme ci-dessus, les règles métier du compte réalisent l'interface IRuleAgent.

Types de réalisation

  1. Forme canonique : Dans une relation de réalisation UML, la forme canonique sert à représenter les interfaces du système. Elle utilise un stéréotype d'interface pour créer une interface, et une relation de réalisation permet de concrétiser cette interface. Dans une forme canonique, la relation de réalisation est représentée par une ligne pointillée avec une flèche ouverte de grande taille. Dans le diagramme ci-dessus, l'interface Iruleagent est réalisée à l'aide d'un objet appelé Account Business Rules.
  2. Forme élidée : Réalisation dans le diagramme de classes UML L'interface peut également être représentée sous forme abrégée. Dans ce cas, elle est délimitée par un cercle, également appelé notation en sucette. Lorsqu'elle est implémentée à l'aide d'un élément du système, cette interface crée une structure abrégée. Dans le diagramme ci-dessus, l'interface Iruleagent est représentée sous forme abrégée et implémentée par acctrule.dll.

Composition

Il ne s'agit pas d'une relation UML standard, mais elle est toujours utilisée dans diverses applications.

L'agrégation composite est un sous-type de relation d'agrégation avec les caractéristiques suivantes :

  • c'est une association bidirectionnelle entre les objets.
  • C'est une relation tout/partie.
  • Si un composite est supprimé, toutes les autres pièces qui lui sont associées sont supprimées.

L'agrégation composite est décrite comme une association binaire décorée d'un diamant noir rempli à l'extrémité globale (entière).

Composition en UML

Composition en UML

Un dossier est une structure contenant n nombre de fichiers. Un dossier est utilisé pour stocker les fichiers qu’il contient. Chaque dossier peut être associé à n'importe quel nombre de fichiers. Dans un système informatique, chaque fichier fait partie d'au moins un dossier à l'intérieur du système d'organisation de fichiers. Le même fichier peut également faire partie d'un autre dossier, mais ce n'est pas obligatoire. Chaque fois qu'un fichier est supprimé du dossier, le dossier reste inchangé tandis que les données liées à ce fichier particulier sont détruites. Si une opération de suppression est exécutée sur le dossier, elle affecte également tous les fichiers présents dans le dossier. Tous les fichiers associés au dossier sont automatiquement détruits une fois le dossier supprimé du système.

Ce type de relation en UML est connu sous le nom de relation d'agrégation composite.

Agrégation

An agrégation L'agrégation est un sous-type de relation d'association en UML. L'agrégation et la composition sont deux types de relations d'association en UML. Une relation d'agrégation peut être décrite simplement comme suit : « un objet d'une classe peut posséder ou accéder aux objets d'une autre classe ».

Dans une relation d'agrégation, l'objet dépendant reste dans la portée d'une relation même lorsque l'objet source est détruit.

Prenons l'exemple d'une voiture et d'une roue. Une voiture a besoin d’une roue pour fonctionner correctement, mais une roue n’a pas toujours besoin d’une voiture. Il peut également être utilisé avec le vélo, le vélo ou tout autre véhicule mais pas avec une voiture en particulier. Ici, l’objet roue a un sens même sans l’objet voiture. Ce type de relation est appelé relation d’agrégation.

FAQ

La multiplicité indique combien d'instances d'une classe peuvent être liées à des instances d'une autre dans une relation, et s'exprime par des valeurs telles que 1, 0..1 ou 1..*. Par exemple, un dossier peut contenir zéro ou plusieurs fichiers.

UML utilise différentes terminaisons de ligne pour indiquer les types de relations : une ligne simple pour l’association, une flèche ouverte pour la dépendance, un triangle vide pour la généralisation, une ligne pointillée avec un triangle vide pour la réalisation et un losange pour l’agrégation ou la composition.

L'association est un lien structurel où des objets ont connaissance les uns des autres de manière durable. La dépendance est une relation plus faible et temporaire où un élément en utilise un autre ; ainsi, un changement de fournisseur peut n'affecter le client que brièvement.

Les outils d'analyse de code par IA peuvent analyser les classes et suggérer des relations probables (association, dépendance, généralisation ou agrégation) en fonction de la manière dont les objets se référencent mutuellement. Les ingénieurs doivent confirmer ces suggestions, car l'IA peut mal interpréter les connexions indirectes ou dynamiques.

Oui. Certains outils de diagrammes d'IA lisent une description en langage clair de vos classes et produisent un diagramme de classes préliminaire avec des liens d'association, de généralisation et de composition. Le résultat constitue un point de départ qui nécessite encore une validation manuelle.

Résumez cet article avec :