Relations (model)
Sommaire |
Introduction
Les classes métiers interagissent entre elles à travers des relations. Une relation est implémentée dans chaque classe métier qui y participe par un attribut particulier appelé rôle.
Les Relations correspondent aux Associations de la norme UML. En Ligne 1000 on préfère appeler Association une relation de multiplicité *-*.
Cardinalités
La cardinalité précise le nombre d'objets qui participent à une relation.
On classe les relations en trois types :
Relation de type référence
Une relation de type référence est une relation entre deux classes A et B, navigable de A vers B, où pour un objet de type A peuvent correspondre 0 ou 1 objet de type B. Exemple
Dans cet exemple on associe un pays à une banque. La relation se traduit par un attribut oidPays et un attribut Pays dans la classe TBanque.
La cardinalité 0..1 signifie qu'un objet de type TBanque peut être associé à un objet de type TPays sans que cela soit obligatoire. Relation de type liste
Relation de type liste
Une relation de type liste est une relation entre deux classes A et B où pour un objet de type A peuvent correspondre "n" objets de type B et pour un objet de type B peuvent correspondre 0 ou 1 objets de type A. Ce type de relation est de cardinalité 0..1-m.
L'implémentation d'un rôle liste dans une classe A génère l'implémentation d'un rôle référence dans la classe B.
Exemple
Dans cet exemple on associe des agences bancaires à une banque. La relation se traduit par un attribut oidBanque et un attribut Banque dans la classe TAgenceBancaire et par un rôle liste AgenceBancaireList dans la classe TBanque.
Relation de type Association
Une relation de type association est une relation entre deux classes A et B où pour un objet de type A peuvent correspondre "n" objets de type B et pour un objet de type B peuvent correspondre "m" objets de type A. Ce type de relation est de cardinalité m-n ou *-*.
L'implémentation de cette relation se fait à travers une classe intermédiaire appelée classe d'association C. La classe A contient un rôle liste vers la classe B, roleBList. La classe B contient un rôle liste vers la classe A, roleAList. La classe C contient des références vers la classe A et la classe B.
Le Framework Ligne 1000 ne supporte pas nativement d’association autre que binaire, il est toutefois possible d’implémenter explicitement ces associations en utilisant des classes d’associations.
Exemple
Un tiers peut être associé à plusieurs périmètres groupe. Un périmètre groupe peut être associé à plusieurs tiers. La classe d'association est TPerimetreGroupeTiers. La relation se traduit par un rôle liste PerimetreGroupeList dans la classe TTiers, un rôle liste TiersList dans la classe TPerimetreGroupe, un rôle référence Tiers et un rôle référence PerimetreGroupe dans la classe TPerimetreGroupeTiers.
Propriétés
Agrégat
L’agrégation est une association non symétrique qui exprime un couplage fort et une relation de subordination. Elle représente une relation de type « ensemble / élément ». Une agrégation peut notamment (mais pas nécessairement) exprimer :
- qu’une classe (un « élément ») fait partie d’une autre (« l’agrégat »),
- qu’un changement d’état d’une classe, entraîne un changement d’état d’une autre,
- qu’une action sur une classe, entraîne une action sur une autre.
A un même moment, une instance d’élément agrégé peut être liée à plusieurs instances d’autres classes (l’élément agrégé peut être partagé).
Une instance d’élément agrégé peut exister sans agrégat (et inversement) : les cycles de vies de l’agrégat et de ses éléments agrégés peuvent être indépendants.
Exemple de rôle agrégation
Composition
La composition est une agrégation forte. Les cycles de vies des éléments, les « composants », et de l’agrégat, le « composé », coïncident : si le composés est détruit, ou copié, ses composants le sont aussi. A un même moment, une instance de composant ne peut être liée qu’à un seul composé. Les « objets composites » sont des instances de classes composées.
Exemple de rôle composition
Création d'une relation
La création d'un rôle se fait au moyen de l'assistant de création de rôles.
- Occupez les deux classes qui font partie de la relation.
- Cliquez droit sur la première classe et choisissez la fonction Ajouter un rôle.
Il est aussi possible d’utiliser l’éditeur de Diagramme de Classe pour définir une relation. Dans ce cas, il suffit de « tirer » une relation entre les deux classes présentes sur le diagramme.
Vous accédez à l'assistant de création de rôles :
Sélectionnez la classe associée. Les cases à cocher dans la partie basse de la fenêtre vous permettent de filtrer les classes disponibles. Cliquez sur le bouton Suivant.
Pour la classe de gauche (pour rappel vous retrouvez le nom de la classe de gauche dans la partie haute de l'assistant), saisissez le nom du rôle et un libellé et ajouter une description. Cliquez sur le bouton Suivant.
Pour la classe de droite (pour rappel vous retrouvez le nom de la classe de droite dans la partie haute de l'assistant), saisissez le nom du rôle et un libellé et ajouter une description. Cliquez sur le bouton Suivant.
Pour changer la cardinalité double-cliquez sur les cardinalités sur l'image. Les valeurs possibles sont : 0..1, 1, 0..*, 1..*. Pour définir une association binaire, double-cliquez sur le carré en bas de l'image. La classe d'association est représentée et il faut saisir le nom de celle-ci (ex. : PerimetreGroupeTiers).
Pour définir un agrégat ou une composition, double-cliquez sur la relation du coté de la classe où vous souhaitez l'agrégat ou la composition. Le symbole graphique se change pour passer d'une relation simple à un agrégat et ensuite à une composition. Définir un agrégat :
Définir une composition :
Pour finir la vue dans le concepteur de modèle des éléments de la relation :