Alors. Où en êtes-vous ? Vous avez identifié toutes les classes ainsi que leurs attributs. À ce stade, toutes les colonnes du fichier CSV ont trouvé une place dans votre modélisation. Vous savez par exemple que les informations sur la réalisatrice Cathy Verney seront stockées dans la classe Realisateur_ice
, et que la sérieVernon Subutex
sera enregistrée dans la classeSerieTV
.
Mais ces deux informations sont séparées dans deux classes distinctes. Or, il faut que vous puissiez indiquer le lien qui lieVernon Subutex
à sa réalisatrice : et à présent, ce lien n’est pas encore modélisé.
Vous l’aurez compris, dans ce chapitre, vous allez créer du lien entre les classes.
Constituez vos associations
Pour créer vos associations, je vous propose de tracer des traits qui relient vos classes, et de leur donner un nom, de préférence un verbe tel que « réalise », « produit », etc.
Définissez les multiplicités de vos associations
Il y a un concept très important quand on définit une association : c’est la notion de multiplicité.
Elle permet de dire si un film peut être réalisé par UN SEUL ou par PLUSIEURS réalisateurs, et inversement : si un réalisateur peut produire UN SEUL ou PLUSIEURS films.
Il existe trois types d’associations :
Plusieurs à plusieurs (many-to-many) :
un film peut être réalisé par plusieurs réalisateurs, et un réalisateur peut avoir réalisé plusieurs films ;
Un à plusieurs (one-to-many) ou plusieurs à un (many-to-one) :
un film n’est réalisé que par au plus 1 société de production, et une société peut produire plusieurs films ;
Un à un (one-to-one) :
vous n’avez pas ce cas dans vos données, mais c’est lorsqu’une instance d’une classe A ne peut être associée qu’à au plus 1 instance d’une classe B. Et qu’une instance de B ne peut être associée qu’à au plus 1 instance de A.
Par exemple, un cinéma n’a qu’une seule adresse, et une adresse donnée ne peut accueillir qu’un seul cinéma.
Ensuite, vous pouvez aller plus loin dans la précision des multiplicités.
Par exemple, quand vous dites « au plus 1 », vous pouvez préciser s’il s’agit de « strictement 1 », ou bien « 0 ou 1 ». Aussi, quand vous dites « plusieurs », vous pouvez entendre « 0, 1 ou plus », ou bien « strictement plus que 1 », etc.
Voici comment noter cela :
Au plus 1 :
Notation | Abréviation | Signification |
0..1 | (pas d'abréviation) | 0 ou 1 |
1..1 | 1 | Exactement 1 |
Plusieurs :
Notation | Abréviation | Signification |
0..* | * | 0, 1 ou plus |
1..* | (pas d'abréviation) | Au moins 1 |
n..n | n | Exactement n (où n est un nombre entier) |
m..n | (pas d'abréviation) | Au moins m et au plus n (avec m et n nombres entiers tels que m<n) |
Voici comment s’utilisent ces notations :
Un film peut être réalisé par au moins 1 réalisateur (noté
1..*
) , et un réalisateur peut avoir produit 0, 1 ou plusieurs (noté*
) films :
Un film est réalisé par exactement 1 société de production (
1
), et une société peut produire 0, 1 ou plusieurs films (*
) :Un cinéma a exactement 1 adresse (
1
), et une adresse donnée ne peut accueillir que 0 ou 1 seul cinéma (0..1
) :
Le choix du minimum fixé à 0 ou 1 est souvent discutable. Dans l’exemple ci-dessus, considérer qu’un réalisateur peut avoir produit 0, 1 ou plusieurs films, c’est considérer qu’il peut y avoir dans votre BDD un réalisateur qui n’est associé à aucun film.
Si la notion de réalisateur est centrale dans le fonctionnement de votre application, alors vous pouvez décider qu’un réalisateur peut exister sans avoir produit de film.
Mais si la notion de réalisateur est secondaire, alors vous pouvez dire « Non, telle que j’ai conçu mon appli, réalisateur sans film, ça ne sert à rien », et donc choisir une multiplicité de 1..*
au lieu de *
.
Voici donc votre modélisation avec les multiplicités :
Caractérisez vos associations grâce aux classes d’association
Il arrive de devoir donner des caractéristiques à une association.
Peut-être qu’intuitivement, vous aviez envie de dessiner ce schéma conceptuel...
... au lieu de dessiner trois classes : Film
,Tournage
etLieu
, comme nous l’avons fait précédemment.
Et vous auriez eu raison ! Mais dans ce cas, vous n’auriez pas réussi à placer les colonnes Date de début
etDate de fin
. En fait, ces deux dates sont des caractéristiques de l’association qui unit un lieu à un film.
Eh bien, sachez qu’il est possible de donner des caractéristiques à un lien, grâce à une classe d’association. Ici, comme l’association s’appelle « est tourné », vous pouvez appeler votre classe « Tournage » :
Ce n’est pas très différent de ce que l’on avait avant, non ?
C’est vrai : les deux options sont similaires et acceptables, et votre choix n’aura pas d’incidence quand vous entrerez votre modélisation dans le SGBDR.
Renforcez vos associations grâce à la composition
Il existe un type d’association particulier, appelé l’association de composition. Celle-ci s’utilise quand une classe est un composant d’une autre classe.
Prenez l’exemple d’un circuit électronique : il est composé de composants électroniques : diodes, condensateurs, microprocesseurs, etc. Ainsi, on peut avoir une association de composition entre une classeCircuitElectronique
et une classeCompostantElectronique
.
Imaginez que votre circuit soit défaillant et que vous deviez donc le jeter. Dans ce cas, vous jetez automatiquement tous ses composants. C’est là la particularité de la composition : le composant (une diode, par exemple) ne peut exister que via son composite (circuit électronique).
Pour votre appli, vous pourriez considérer qu’un tournage est un composant du film. En effet, rien ne sert d’enregistrer dans votre BDD un tournage si vous ne savez pas à quel film il est associé.
On peut aussi avoir une composition entreFilm
etSocieteDeProduction
. En effet, un film ne peut exister si une société ne l'a pas produit. De plus, il existe parfois des films différents ayant le même nom (exemple : au moins quatre films portent le titre Home). Ainsi, pour identifier un film de manière certaine, on a besoin de son titre mais aussi du nom de sa société de production, ce qui prouve le lien de dépendance entre ces deux classes.
Voici comment cette composition aurait été représentée : avec un losange noir (plein) du côté du composite :
La composition s’emploie quand ces trois caractéristiques sont réunies :
Le composite est « composé » de composants.
L’association de composition est de type un-à-plusieurs, car le composite peut avoir plusieurs composants (
0..1
,1
,*
ou1..*
), et le composant appartient à un et un seul composite (la multiplicité est donc forcément1
, rien d’autre) : on dit que le composite n’est pas partageable.Il y a un lien entre le cycle de vie du composite et du composant : un composant disparaît dès que l'objet composite auquel il appartient est supprimé.
Tadaaaaaaam ! Je vous présente donc, en exclusivité, la dernière version de votre modélisation UML ! 😃
Prenez garde à la redondance !
Par exemple, vous pouvez être tenté de dire qu’un réalisateur travaille pour une société de production lorsqu’il réalise un film. On aurait donc ceci :
Cependant, on peut déduire l’associationtravaille pour
grâce aux deux autres associations. En effet, si on sait que Le Temps des égarés est réalisé par Virginie Sauveur et produit par Delante Productions, alors on déduit que Virginie Sauveur a travaillé pour Delante Productions.
À vous de jouer
Voici un diagramme de classes représentant des concerts donnés par des groupes de musique. Déterminez les multiplicités possibles des associations :
Voici une réponse possible :
Un groupe de musique peut donner 0, 1 ou plusieurs concerts ;
Un même concert peut accueillir plusieurs groupes (mais au moins 1) ;
Par contre, un même concert ne peut se tenir que dans une seule salle de concert ;
Cette salle peut quant à elle accueillir 0, 1 ou plusieurs concerts (à des dates différentes) ;
Une salle de concert a obligatoirement une et une seule adresse ;
Mais une adresse donnée n’accueille pas forcément de salle de concert, ou peut en accueillir plusieurs.
En résumé
Graphiquement, on modélise les associations entre les classes par des traits qui les relient.
Une association peut être de trois types :
plusieurs-à-plusieurs ;
un-à-plusieurs ;
un-à-un.
On précise ces trois types grâce aux multiplicités :
0..1
,1
,1..*
, etc.Une association peut avoir des caractéristiques, que l’on indique dans une classe d’association.
Pour indiquer qu’une association est de type « composant », on utilise une composition.
Voilà, vous avez posé les bases de votre diagramme UML. Maintenant, il ne reste plus qu’à le perfectionner grâce aux possibilités du langage UML.