Vous êtes sur la page 1sur 168

Le modèle de classes de UML

Les diagrammes d’objet

Modélisation avec UML: Diagrammes de classes et


Diagrammes d’objets

David Célestin FAYE

UFR SAT/UGB

3 mai 2023

David Célestin FAYE Modélisation avec UML 1/168


Le modèle de classes de UML
Les diagrammes d’objet

Plan 2

1 Le modèle de classes de UML


Le modèle de classes de UML
Transformation du diagramme de classe en schéma
relationnel...

2 Les diagrammes d’objet

David Célestin FAYE Modélisation avec UML 2/168


Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Plan 3

1 Le modèle de classes de UML


Le modèle de classes de UML
Transformation du diagramme de classe en schéma
relationnel...

2 Les diagrammes d’objet

David Célestin FAYE Modélisation avec UML 3/168


Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Les Diagrammes d’UML 4


Diagramme

Diagramme Diagramme
De structure comportemental

Diagramme Diagramme Diagramme Diagramme Diagramme de


de classes de packages de d'objets d'activités Cas d'utilisation

Diagramme Diagramme Diagramme de Diagramme Diagramme de


de composants de déploiement Structure composite d'interaction Transition d'état

Diagramme Diagramme de
De séquence communication

Diagramme Diagramme
Vue d'ensemble De timing
Des interactions

David Célestin FAYE Modélisation avec UML 4/168


Diagramme de classes 5
Les diagrammes de cas d’utilisation modélisent « à
QUOI »sert le système.
Le système est composé d’objets qui interagissent entre eux et
avec les acteurs pour réaliser ces cas d’utilisation
Le diagramme de classes exprime la structure statique du
système en termes de classes et de relations entre ces classes.
Intérêt : modéliser les entités du système d’information.
Ces informations sont structurées, c’est-à-dire qu’elles ont
regroupées dans des classes.

On modélise les concepts statiques du métier du client et leurs


relations statiques.
On s’inspire d’une vision de données orientées objet.
Rappel : en phase d’analyse, pas de conception.
Diagramme de classes 6
Ils permettent d’opérer une transition entre la modélisation
fonctionnelle des besoins par cas d’utilisation et la
modélisation objet
Notion d’objet et de classe 7

Objet
Entité qui a des propriétés structurelles et comportementales.

Par exemple un compte bancaire a un numéro, un solde qui


correspond au montant de CFA que le propriétaire du compte a
confié à la banque. Sur ce compte ce dernier pourra déposer, retirer
de l’argent ou effectuer des virements.
Classe
La classe est une description abstraite( structurelle et
comportementale) d’un ensemble d’objets « de même type »(ayant
les mêmes propriétés).
Type abstrait caractérisé par des propriétés et des méthodes
communes à un ensemble d’objets, permettant de créer des
instances de ces objets.
Représentation graphique d’une classe 8
Représentation
Nom de la classe
Atrributs[:type]
[Méthodes]

Exemple

Instanciation = création d’un objet à partir d’une classe


Objet = instance de classe
(Pape Aliou Sala Fall, 5 rue potin Saint-Louis,
12/05/1989)
Notion d’attribut 9
Attribut
Information élémentaire qui caractérise une classe.

propriétés d’un attribut


Typé → Le domaine de valeur est fixé a priori
attribut:type → nom:varchar → Fall
Multivalué → Peut prendre plusieurs valeurs dans un domaine
attribut multivalue[min..max]:type →
prenom[1..3]:varchar → Pape, Aliou, Sala
Composé→ Joue le rôle d’un groupe d’attributs
attribut compose → adresse
sous attribut 1 → numero: varchar → 5
sous attribut 2 → rue: varchar → potin
sous attribut 3 → ville: varchar → Saint-Louis
Dérivé → Utilisation de méthodes :
Age(DateNaiss)
Notion d’attribut 10
contraintes :
{ordered} : les valeurs sont ordonnées
{list} : les valeurs ne sont pas ordonnées
{readonly} : l’attribut ne peut pas être modifié
Remarque : Atomicité des attributs, classe normalisée
multiplicité : nombre de valeurs qu’un attribut peut contenir
par défaut (exemples : [n], [n..*], etc.)
lorsque la modélisation des données est faite en vue d’une
implantation des données à l’aide d’un SGBD Relationnel, le
type d’un attribut ne peut être qu’un type de base (Integer,
String, Boolean, ...).
On dit que les attributs doivent être atomiques et par voie de
conséquence les classes sont normalisées.

Dans la suite, nous supposons cette hypothèse d’atomicité pour ne


pas être en contradiction avec la 1NF.
Notion d’attribut : Visibilité 11
Trois visibilités sont disponibles pour les attributs et les opérations
de la classe (pas sur les associations) :
Public(+) : accessible pour tout utilisateur d’une classe, y
compris la classe elle- même.Il s’agit du plus bas niveau de
protection des données.
Protected(#) : accessible par la classe elle- même et par ses
héritiers.
Private(-) : accessible seulement par la classe elle- même. Il
s’agit du niveau de protection des données le plus élevé.
Package(rien) : seul un élément du même package peut
accéder à l’élément
Note
On peut appliquer les mêmes attributs de visibilité pour les
attributs et pour les méthodes : +, #, -"
Notion d’attribut 12

Attribut de classe
valeur commune à chaque instance de la classe (static en Java
ou en C++) Ce sont des sortes de constantes définies au
niveau de la classe.
souligné dans la classe

Attribut dérivé
propriétés calculées à partir de celles d’autres attributs
syntaxe : « /nom »
exemple : calcul de l’attribut « durée » à partir des attributs
« début » et « fin »
Notion d’attribut 13

Attribut dérivé
COURSE Valeur
initiale
-dateDebut : Date=now()
-dateFin : Date
-/duree : int {R1 : durée=dateFin-dateDebut} Contrainte
-optionBagage : boolean définie R1
-passager : String[1..3]
-kilometrage : int Cardinalité
-modePaiement : typePayement{ReadOnly}
-rationTempsKilométrage : double

Uniquement
Attribut de classe accessible
en lecture
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Attribut, Opérations (implémentation) 14


A
+a1 : String
a2 : String
#a3 : String
-a4 : String
+op1()
- op2()
public class A {
public String a1 ;
package String a2 ;
protected String a3 ;
private String a4 ;
public void op1 (){
...
}
private void op2 (){
...
}
}

David Célestin FAYE Modélisation avec UML 14/168


Notion d’Opération / Méthode 15
Opération
service offert par la classe
Spécification (déclaration) d’une méthode
Fonction qui peut prendre des valeurs en entrée, peut modifier
des attributs et produire un résultat
Opération abstraite (en italique) : opération dont la méthode
n’est pas spécifiée
opération statique (soulignée) : peut associer des pré et
post-conditions

Méthode
implémentation (définition) d’une opération
définit comment l’opération se comporte, pas seulement ce
qu’elle fait
Notion d’Opération / Méthode 16
Différents types de méthodes :
accesseurs (get...) : renvoie une information sur l’état d’un
objet (fonction)
modifieurs (set...) : modifie l’état de l’objet (procédure)
constructeurs : initialise une nouvelle instance
Syntaxe de description d’une opération :
Visibilité opération([arguments :type[=valeur initiale]]) :type de
résultat
Visibilité de l’opération (-, +, #)
Nom de l’opération
Liste des arguments avec leurs types et éventuellement leurs
valeurs par défaut
type du résultat retourné
Notion d’Opération / Méthode 17

Méthode de Classe
Méthode qui ne porte pas sur les attributs d’objet de la classe
mais uniquement sur des attributs de classe ou sur des valeurs
constantes.
Une méthode de classe peut être utilisée sans avoir à instancier
d’objet. On peut se contenter d’un objet déclaré pour y
accéder.
En UML, ces méthodes sont listées avec les autres, mais elles
sont soulignées.
Messages 18

La communication entre objets s’effectue au moyen de


messages
Un message est l’appel d’une méthode publique de l’objet
Objet Emetteur
récepteur
METHODES METHODES

service
Message
interface

METHODES METHODES

Objet Récepteur
Messages 19

Dans le code implantant le corps de la fonction on peut :


lire ou modifier la valeur des attributs de l’objet récepteur, ou
d’attributs d’autres objets s’ils sont accessibles
à partir de l’objet récepteur envoyer des messages à l’objet
émetteur, ou à d’autres objets s’ils sont accessibles à partir de
l’objet récepteur
Messages 20

L’envoi d’un message


peut modifier l’état de l’objet récepteur, ou d’autres objets
peut avoir pour résultats l’envoi d’autres messages (réactions
en chaîne)
est comme la demande d’un service puisque l’objet émetteur ne
sait pas précisément comment le calcul ou l’action sera réalisé
L’objet émetteur est le client, et l’objet récepteur est le
fournisseur du service
L’envoi d’un message est similaire à l’appel d’une fonction,
mais le message est envoyé à un objet
Indirection ⇐ Le résultat dépend donc de l’objet récepteur
Messages et liens 21

Pour qu’un objet A puisse envoyer un message à un objet B, il


faut qu’il y ait un lien de A vers B
Les liens entre objets permettent d’assurer la navigation
inter-objets et donc l’envoi d’un message d’un objet vers un
autre
Au niveau logique, les liens sont nommés et sont directionnels
Un lien représente une relation entre deux objets
Un lien est une connexion physique ou conceptuelle entre des
instances d’objets : un lien est un tuple d’instances
Un lien est une instance d’ association
Notion d’association 22
Association
Relation entre deux (ou plusieurs) classes qui définit l’ensemble et
la nature d’un groupe de liens (ayant une structure et une
sémantique commune) entre les objets de ces classes.
Représentation
Associer
Classe 1 Classe 2

Exemple
Notion d’association 23
Association Vs Lien 24

Un lien lie deux objets


Une association lie deux classes
Un lien est une instance d’association
Une association décrit un ensemble de liens
Des liens peuvent être ajoutés ou détruits pendant l’exécution,
(ce n’est pas le cas des associations)
Types d’Association 25

Il y a trois types d’associations entre classes :


Les associations simples
Les associations d’agrégation de composition
Les associations d’héritage
Notion de multiplicité(cardinalité) 26

Multiplicités (cardinalités)
Élément d’une association permettant de représenter le nombre
minimum et maximum d’instances impliquées dans la relation.
0..1 → de 0 à 1
1..1 ou 1 → 1 seul
0..n ou 0..∗ ou ∗ →Plusieurs
1..n ou 1..∗ →de 1 à plusieurs
NB : La multiplicité précise le nombre d’instances (et non de liens
comme dans Merise) qui participent à la relation
Notion de multiplicité(cardinalité) 27

Un étudiant peut s’inscrire à plusieurs modules


Un étudiant s’inscrit à une filière
Un étudiants s’inscrit à 1 ou plusieurs modules
Un module a plusieurs inscrits
Attention
Les cardinalités sont inversées par rapport au modèle E/A.
Familles de Cardinalités 28

Cardinalités dites de type n : m n (resp. m) ∈ N, n (resp. m) > 1


b..* Associer a..*
Classe 1 Classe 2

À un élément de Classe1, on peut associer de a à plusieurs (m)


éléments de Classe2 a ∈ N, a ≤ m
À un élément de Classe2, on peut associer de b à plusieurs (n)
éléments de Classe1 b ∈ N, b ≤ n
Familles de Cardinalités 29

Cardinalités dites de type 1 : n n ∈ N, n > 1


b..1 Associer a..*
Classe 1 Classe 2

A un élément de Classe1, on peut associer de a à plusieurs (n)


éléments de Classe2 a ∈ N, a ≤ n
A un élément de Classe2, on peut associer au plus un élément
de Classe1 b ∈ {0, 1}
Familles de Cardinalités 30

Cardinalités dites de type 1 : 1

b..1 Associer a..1


Classe 1 Classe 2

A un élément de Classe1, on peut associer au plus un élément


de Classe2 a ∈ {0, 1}
A un élément de Classe2, on peut associer au plus un élément
de Classe1 b ∈ {0, 1}
Notion de classe d’association 31

Classe d’association(Association porteuse de données)


La classe d’association (Link Association) est utilisée pour ajouter
des propriétés (qui prennent la forme d’attributs) aux associations.

Une classe association est une classe comme les autres et peut à ce
titre peut participer à d’autres associations
Notion de classe d’association 32

Equivalence classe d’association/association

Personne Entreprise
Nom 1..* * Nom
Prenom
dnaiss

Emploi
intitulé
début
fin

Personne Emploi Entreprise


Nom 1 * intitulé 1..* 1 Nom
Prenom début
dnaiss fin
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Notion de classe d’association : Implémentation 33

Personne Entreprise
Nom 0..* 0..* Nom
Prenom
dnaiss employé employeur

Emploi
-intitulé
-salaire

public class Emploi {


private string intitule ;
private double salaire ;
private Personne employe ;
private Entreprise employeur ;
...
}

David Célestin FAYE Modélisation avec UML 33/168


Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Classe-association pour plusieurs associations 34

**********
Impossible de rattacher une classe-association à plus d’une
association puisque la classe-association constitue elle-même
l’association
Dans le cas où plusieurs classe-associations doivent disposer
des mêmes propriétés, elles doivent hériter d’une même classe
possédant ces propriétés, ou l’utiliser en tant qu’attribut.
Impossible de rattacher une instance de la classe d’une
classe-association à plusieurs instances de l’association de la
classe-association : une classe- associaiton est une entité
sémantique atomique et non composite qui s’intancie donc en
bloc.

David Célestin FAYE Modélisation avec UML 34/168


Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Association réflexive sur classe-association 35


Personne Entreprise
Nom 0..* 0..* Nom
Prenom
dnaiss employé employeur

Emploi
-intitulé subalterne
-salaire
-daraEmbauche *

0..1
supérieur de
Une personne n’est pas le supérieur d’une autre dans l’absolue.
Une personne est, en tant qu’employé d’une entreprise donné,
le supérieur d’une autre personne dans le cadre de son emploi
pour une entreprise donnée.
Il s’agit donc d’une association réflexive, non pas sur la classe
Personne mais sur la classe-association Emploi

David Célestin FAYE Modélisation avec UML 35/168


Liens multiples 36
Plusieurs instances d’une même association ne peuvent lier les
même objets.
Cependant, dans certains cas on doit pouvoir le faire
La contrainte {bag} indique qu’il peut y avoir des liens
multiples impliquant les mêmes paires d’objets.

Personne Société
Nom Nom
Prenom * {bag} {bag} *
dnaiss détenteur gérant

Action
-dateAchat
-quantité
-prix

Il y a plusieurs instances de la classe-association Actions liant


une même personne à une même société : une même personne
peut acheter à des moments différents des actions d’une même
société.
Association dérivée 37

Association dérivée
Association qui peut être déduite ou conditionnée par une autre
asociation

client sous-traitant
Entreprise SSII
* *
0..1 client employeur *

travaille

*
/travaille * Prestataire

Une prestataire travaille toujours pour une entreprise qui est


elle-même cliente de la SSII (NB : la dérivation peut être exprimée
en OCL)
Association qualifiée 38

La qualification des associations consiste à réduire le nombre


d’occurrences d’une association.
Elle ne s’applique qu’à des associations dont la multiplicité est
supérieure à 1 (sinon, le nombre d’occurrences ne peut pas
être réduit).

Qualification(restriction) d’une association,


Consiste à sélectionner un sous-ensemble d’objets parmi les
objets qui participent à une association.
restriction réalisée au moyen d’un tuple d’attributs particuliers,
appelé qualificatif ou clé, qui est utilisé conjointement avec un
objet de la classe de départ
Association qualifiée 39
Qualificateur
Attribut permettant de distinguer les objets situés à l’extrémité
de multiplicité « plusieurs » d’une association
Attribut réduisant la multiplicité « plusieurs »à « un »
joue le rôle semblable à une clé primaire dans une BDR
L’attribut qualificatif appartient à l’association
Chaque instance de la classe A accompagnée de la valeur du
qualificatif (ou la clé), identifie un sous-ensemble des instances
de B qui participent à l’association

A qualificatif
* B

{sous-ensemble} *

Association qualifiée
association contenant un ou plusieurs attributs qualificateurs
Association qualifiée 40

Considérons le schéma suivant. Il décrit le fait qu’un avion contient


plusieurs sièges qui ont chacun un numéro.

ce schéma ne nous permet pas de dire que chaque siège a


un numéro qui est unique pour chaque avion.
Cette notion proche de la clé primaire du modèle de bases de
données relationnelles, nous permet de préciser la cardinalité
des associations.

« un avion contient un siège pour un numéro donné »


Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Association qualifiée 41
Banque
Personne
compte
* 0..2

Nombre d’objets trouvés


Attribut qualif icateur par l’attribut qualif icateur

Un compte dans une banque appartient à au plus deux


personnes. Autrement dit, une instance du couple {Banque ,
compte} est en association avec zéro à deux instances de la
classe Personne.
Mais une personne peut posséder plusieurs comptes dans
plusieurs banques. C’est-à-dire qu’une instance de la classe
Personne peut être associée à plusieurs (zéro compris)
instances du couple {Banque , compte}.
David Célestin FAYE Modélisation avec UML 41/168
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Association qualifiée 42

Banque
Personne
compte
* 0..2

Nombre d’objets trouvés


Attribut qualif icateur par l’attribut qualif icateur

Java (association qualifiée) :


public class Banque {
public Personne getPersonne ( Compte unCompte ) ;
public void ajouterPersonne ( Compte unCompte ,
Personne unePersonne ) ;
}

David Célestin FAYE Modélisation avec UML 42/168


Association qualifiée 43
Un numéro de Salle permet d’identifier une salle unique dans
Bâtiment donné
Un numéro de Salle est relatif à un Bâtiment

Batiment
Salle
Situer
Nom numeroSalle capacité
nbEtages 1 1

dans un avion, pour une rangée donnée, il y a 4 sièges


Notion de rôle 44

Les rôles
on peut ajouter un sens de lecture caractérisant l’association
et de préciser le rôle joué par une ou plusieurs classes.
Les rôles permettent d’apporter plus de lisibilité, plus de
compréhension aussi bien au niveau du diagramme de classes
qu’au niveau du diagramme d’objets
Le rôle est un pseudo-attribut. On peut préciser sa visibilié (+,
-, #)
Classe 2

rôle 2

Associer

rôle 1

Classe 1
Notion de rôle 45

Par exemple, le diagramme de classes suivant ne permet pas de


savoir comment s’interprète l’association Responsable, par rapport
aux multiplicités (1..1 et 0..∗) :

On peut augmenter la compréhension en mettant des noms de rôles


Notion de rôle 46

Il n’est pas possible d’imposer dans un modèle que toute personne


a 2 parents, car au moment de la saisie les utilisateurs devront
remonter à Adam et Eve...
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Notion de rôle : Implémentaion des associations réflexives 47

Personne
chef

subordonne 0..*

public class Personne {


private Personne [] subordonne ;
private Personne chef ;
...
}

David Célestin FAYE Modélisation avec UML 47/168


Association navigable 48
Par défaut, une association UML est navigable dans les deux
sens.
Si un objet A est relié à un objet B, par définition B est aussi
relié à A (dans le cadre de cette même relation).
UML 2 permet d’exprimer que les instances d’une classe ne
connaissent pas les instances d’une autre bien qu’étant reliées
entre elles dans le cadre de l’association.
Attention : Dans un diagramme de classes toute classe doit
être accessible à partir de la classe principale

Electeur Candidat
vote
* 0..1
Association navigable 49
Personne Entreprise

employé employeur

Une entreprise connait ses employés


Un employé connait son entreprise

Commande Produit

x
ligne produit

Navigabilité : un produit ne stocke pas les commandes


Association navigable 50

Personne Entreprise
employeur
employé

Personne Entreprise

employeur : Entreprise employés : Personne

La seconde représentation est une manière de représenter


l’implémentation de l’association en langage objet
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Implémentation Association uni-directionnelle 1 vers 1 51

1 1
A B
rb
public class A {
private B rb ;
public void add ( B b ) {
if ( b != null ) {
this . rb = b ;
}
}
}

public class B {
... // La classe B ne connait pas l ’ existence de la classe A
}

David Célestin FAYE Modélisation avec UML 51/168


Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Implémentation association bi-directionnelle, 1 vers 1 52


1 1
A B
ra rb
public class A {
private B rb ;
public void add ( B b ) {
if ( b != null ) {
if ( b . getA () != null ) { // b déjà connecté
b . getA (). setB ( null ) ; // déconnecte }
this . setB ( b ) ;
b . setA ( this ) ;
}
}
public B getB () {
return ( rb ) ;)
}
public void setB ( B b ) {
this . rb = b ;
}
}

David Célestin FAYE Modélisation avec UML 52/168


Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Implémentation association bi-directionnelle, 1 vers * 53


1 *
A B
ra rb
public class A {
private ArrayList <B > rb ;
public A () {
rb = new ArrayList <B >() ;
}
public ArrayList <B > getArray () {
return ( rb ) ;
}
public void remove ( B b ) {
rb . remove ( b ) ;
}
public void addB ( B b ) {
if ( ! rb . contains ( b ) ) { // b déjà présent
if ( b . getA () != null ) b . getA (). remove ( b ) ;
b . setA ( this ) ;
rb . add ( b ) ;
}
}
}
David Célestin FAYE Modélisation avec UML 53/168
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Implémentation association bi-directionnelle, * vers * 54

1..* *
Produit Commande

Plus difficile : gérer à la fois la cohérence et les collections

David Célestin FAYE Modélisation avec UML 54/168


Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Association-Dépendance 55
Les relations de dépendances sont utilisées quand il existe une
relation sémantique entre plusieurs éléments du modèle qui
n’est pas de nature structurelle (association, composition,
agrégation ou héritage.
relation unidirectionnelle
La relation de dépendance indique une dépendance entre les
propriétés d’une classe (le client) et une autre classe (le
serveur, supplier). En conséquence, une modification du
serveur peut affecter le comportement du client.
Principales dépendances
« Utilise » : La source requiert la cible pour son bon
fonctionnement.
« Réalise » : Réalisation d’une spécification (opération).
Il y a toujours dépendance quand il y a navigabilité.

Client Fournisseur

David Célestin FAYE Modélisation avec UML 55/168


Association n-aire 56

Association n-aire
Relation qui associe n classes par le biais de cardinalités de type
l : m. Il est souvent possible de récrire une association ternaire avec
trois associations binaires en transformant l’association en classe.

Représentation Exemple

Classe 3 Chaine
* *

Classe 1 * * Classe 2 Film * * Créneau

Associer Audience
Atrributs[:type] tauxAudience
[Méthodes]
Association n-aire : contrainte d’unicité 57

Unicité par multiplicité


équivalent à la notion de CIF avec MERISE
Exemple : un représentant de commerce visite un seul secteur à une
période donnée Le commercial enregistre un certain nombre de
contrats lors de chaque visite.
Représentant
nomRep
ancienneté

Qui? *

Période Secteur
IdPeriode 1 NomSecteur
dateDeb * région
dateFin Quand ? Où?

Visite

nbContrats
Association n-aire : contrainte d’unicité 58
Unicité avec une classe-association
équivalent à la notion de CIF avec MERISE
La classe-association et sa multiplicité 1 du côté de la classe
Secteur modélise la contrainte d’unicité.
la table Secteur doit jouer un rôle de clé étrangère pour
identifier la colone nbContrats alors que les tables
représentant et Periode doivent jouer le rôle de clé
primaire.
Période Représentant
IdPeriode nomRep
dateDeb * * ancienneté
dateFin

Visite Secteur
* 1 NomSecteur
nbContrats région
Équivalences 59
Parfois, l’information véhiculée par une classe-association peut être
véhiculée sans perte d’une autre manière

n m 1 m n 1
A B A C B
{bag} {bag}

C C
*

* * 1 1
A B A B
{bag} {bag}
Classe-association, association n-aire ou association
qualifiée ? 60

Est-il plus pertinent d’utiliser une classe-association, une


association n-aire ou encore une association qualifiée ?
NB : une classe-association est abord et avant tout une
association. De plus dans une classe-association, la classe est
indissociable de l’association
Banque Banque
* compte
*
compte

* 0..2
Personne Personne

(A) (B)

Pour couvrir le cas des comptes joints, il faut utiliser le modèle (B).
Classe-association, association n-aire ou association
qualifiée ? 61

Enseignant Enseignant
* 0..1

Cours Cours
*
* 0..1
Groupe Groupe

(A) (B)

Si un cours doit pouvoir exister indépendamment d’un lien


entre un enseignant et un groupe, il faut utiliser le modèle (B).
Dans le modèle (A), un cours ne peut exister que s’il existe un
lien entre un objet Enseignant et un objet Groupe. Quand le
lien est rompu, le cours l’est également
Notion de clé 62

Clé
Une clé est un attribut qui identifie de façon unique une occurrence
dans la base de données.
Différentes clés : # Primaire(clé choisie),# candidate(clé
potentielle), Artificielle(clé générée)
Association : Agrégation 63
Agrégation
Association particulière entre classes
Dissymétrique : une classe prédominante sur l’autre
Relation de type composant-composite , « tout-partie »ou
« ensemble-élément »
Deux types d’agrégation
Agrégation faible
Composition
Exemple
Lecteur de contenu audio permettant de créer des listes de lecture
Liste de lecture * 1..* Morceau 1..* 1 Album

agrégation faible composition


Association : Agrégation 64

Remarque
En général, les agrégations sont navigables uniquement dans le
sens Agrégat vers Eléments agrégés.
En général, les agrégations sont des associations 1..*.
Quand on ne précise pas la cardinalité d’une agréation, c’est
qu’elle est de cardinalité : 1..*
Association : Agrégation faible 65
Agrégation par référence
une des extrémités (« composite ») joue un rôle prédominant
par rapport à l’autre extrémité ( « composant »),
Le composite fait référence à ses composants
La création ou destruction du composite est indépendante de
la création ou destruction de ses composants
Un objet peut faire partie de plusieurs composites à la fois
Une liste de lecture est composée d’un ensemble de morceaux
Un morceau peut appartenir à plusieurs listes de lecture
Supprimer la liste ne supprime pas les morceaux
Liste de lecture * 1..* Morceau

agrégation faible
Association
Exemple
: Agrégation faible 66
recette Ingrédient
* *

Polygone Point
* *

Bibliothèque Livre
* *

Une recette de cuisine est élaborée avec des ingrédients


Un polygone est constitué d’une suite de points sur le plan
Une bibliothèque contient un ensemble de livres
Une agrégation n’impose pas de contrainte particulière sur les
cardinalités : dans l’exemple ci-après, le 1..* montre que des
personnes peuvent être copropriétaires des mêmes immeubles.
Association : Agrégation faible 67

Exemple

Par exemple, un ordinateur se compose d’une unité centrale, d’un


clavier et d’un écran
Association : Agrégation faible 68

Cas particulier des associations réflexives :


On peut avoir des cas d’agrégation réflexive dès que l’on modélise
des relations hiérarchiques ou des liens de parenté par exemple.
Association : Agrégation faible 69

Les critères suivants impliquent une agrégation :


une classe fait partie d’une autre classe,
une action sur une classe implique une action sur une autre
classe,
les objets d’une classe sont subordonnés aux objets d’une autre
classe.
Attention : l’inverse n’est pas toujours vrai ; l’agrégation n’implique
pas nécessairement tous les critères ci-dessus.
NB : Les agrégations s’implémentent comme les associations.
Association : Composition 70
Agrégation par valeur
forte dépendance composant / composite
La création ou destruction du composite entraîne la création
ou destruction de ses composants
Un objet ne fait partie que d’un composite à la fois
(multiplicité 0 ou 1), ; et ne peut pas changer(liens fixes)
Dans une composition, la classe dépendante n’a de sens ou
d’existence qu’associée à sa classe composite.
Un morceau n’appartient qu’à un album
La suppression de l’album entraîne la suppression de tous ses
morceaux Morceau 1..* 1 Album

composition
Association : composition 71
Soit à représenter un polygone composé d’un ensemble de
points
En utilisant l’agrégation, les points du plan peuvent être
partagés
Dans la composition, il n’y a pas de partage : si deux
polygones partagent le même sommet, il existe deux points
différents qui ont des valeurs identiques comme coordonnées

Polygone Point
1 3..*
Association : composition 72

Le choix d’une modélisation dépend essentiellement des


opérations à effectuer sur les polygones
La composition favorise les déplacements indépendants des
polygones, les homothéties de chaque objet. Elle sera adéquate
pour représenter un système de dessin logiciel
l’agrégation favorise le travail sur les points. En effet la
modification d’un point entrainera la modification de tous les
polygones qui le partagent. Elle sera choisie pour la
modélisation de treillis comme dans l’exemple montrant la
modélisation d’un hélicoptère en « fil de fer »[P. A. MULLER]

NB : Une composition peut s’implémenter comme une association


unidirectionnelle.
Association : composition 73
Exemple d’une fenêtre à afficher sur un écran d’ordinateur
Agrégation et composition 74

Z agrégation :
sémantique de composition
agrégation legère
le composant peut être un composant d’un autre type d’entité
mais pas de dépendance
Z composition :
sémantique de composition
agrégation forte
le composant ne peut pas être un composant d’un autre type
d’entité
dépendance : si le composant est détruit , le composant aussi
Au niveau logique, on considère que le composé est responsable de
la gestion de ses composants (c’est le composé qui crée, modifie,
ou détruit ses composants)
Agrégation et composition 75

Z Dès lors que l’on a une relation du tout à sa partie, on a une


relation d’agrégation ou de composition(« agrégation forte »).
Z Pour choisir entre une agrégation ou une composition, se poser
les questions suivantes :
Est-ce que la destruction de l’objet composite (du tout)
implique nécessairement la destruction des objets composants
(les parties) ? C’est le cas si les composants n’ont pas
d’autonomie vis-à-vis des composites.
Lorsque l’on copie le composite, doit-on aussi copier les
composants, ou est-ce qu’on peut les « réutiliser », auquel cas
un composant peut faire partie de plusieurs composites ?

Si on répond par l’affirmative à ces deux questions, on doit utiliser


une composition.
Contrainte dynamique 76
Les contraintes s’expriment par annotations sur les attributs, les
classes et les associations.
Représentation Exemple

Classe 1 Candidat

Contrainte On s'inscrit avant


d'association De composer
inscrire passer
* *
Classe 2 Epreuve
{contrainte
d'attribut} Atrribut:type codeEpreu:integer
{<=8} coefficient:int
Propriétés et contraintes sur les associations 77

Propriétés sur extrémités d’associations


{variable} : instance modifiable (par défaut)
{frozen} : instance non modifiable (remplacé par {readonly}
{addOnly} : instances ajoutables mais non retirables (si mult.
> 1)
Contraintes prédéfinies
Sur une extrémité : {ordered}, {unique}, ...
entre 2 associations : {subset}, {xor}, ...
Contrainte d’association 78

Ordonné Inclusion {IN}, {SUBSET}, {1} Si l’association


incluse est instanciée, l’autre doit l’être également
ET, égalité ou simultanéité {ET}, {=}, {S} Si une association
est instanciée, l’autre doit l’être également
Exclusion {X} Les deux associations ne peuvent être
instanciées simultanément
OU inclusif, couverture ou totalité {OR}, {T} Au moins une
des deux associations doit être instanciée
OU exclusif ou partition {XOR}, {XT}, {+} Au moins une des
deux associations doit être instanciée
Contrainte d’association 79

Classe 1 Classe 1 Classe 1

{IN} {AND} {X}

Classe 2 Classe 2 Classe 2

Classe 1 Classe 1

{OR} {XOR}

Classe 2 Classe 2
Contrainte d’association 80

titulaire Personne

Compte {xor}

titulaire

Entreprise

Le titulaire d’un compte est soit une personne, soit une entreprise
Contrainte d’association 81

1..* 1..*
Pays Ville
villes
nom {subset} nom
langue 1 1
population
monnaie surface
capitale

La terminaison d’association capitale est une sous collection de la


terminaison villes
Contrainte d’association 82

1..* 1..*
Pays Ville
villes
nom nom
langue {refine} population
monnaie 1 surface

capitale Ville

La terminaison d’association capitale raffine la terminaison


d’association villes
Généralisation 83
Généralisation
La généralisation(héritage) n’est pas une association mais une
relation de classification entre une classe générique et des classes
plus spécifiques(sous-classes).
transmission des propriétés d’une classe (ses attributs et
méthodes) vers une sous-classe.
Une classe peut être spécialisée en d’autres, afin d’y ajouter
des caractéristiques spécifiques ou d’en adapter certaines.
Plusieurs classes peuvent être généralisées en une classe qui les
factorise, afin de regrouper les caractéristiques communes d’un
ensemble de classes.
Relation transitive, non réflexive, et non symétrique
L’héritage peut être simple ou multiple
L’héritage évite la duplication et encourage la réutilisation.
.
Généralisation 84
Un objet sera instance d’une seule classe
Il s’agit donc d’expliciter une structure entre classes
Géneral
Atrributs[:type]
[Méthodes]

Spécialisation
Atrributs[:type]
[Méthodes]

une classe spécialisée


possède toutes les caractéristiques de la classe parent
(attributs, opérations, association) ainsi que des
caractéristiques supplémentaires
ne peut pas accéder aux caractéristiques privées de la classe
parent
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Héritage (implémentation) 85

public class A {
...
}
public class B extends A {
...
}

David Célestin FAYE Modélisation avec UML 85/168


Héritage ou composition ? 86

A A'
Atrributs[:type] Atrributs[:type]
[Méthodes] [Méthodes]

B est un A A a des B
(être) (avoir)

B B'
Atrributs[:type] Atrributs[:type]
[Méthodes] [Méthodes]

Dans le cas de la composition, il existe des instances A′ et de


B ′ , les instances de A′ sont composés par des instances de B ′ .
Dans le cas de la généralisation, il existe des instances de A et
de B, mais leurs instances ne sont pas liées. Les instances de
B héritent du même comportement que les instances de A
Exemple généralisation 87

Dans notre exemple il existe des instances dans chacune des


classes, les classes les plus spécialisées héritent de tous les attributs
et toutes mes méthodes de leurs ancêtres.
Exemple généralisation 88

La généralisation est classification


L’héritage établit un ordre classifiant les différentes sous
classes Une sous classe hérité de tous les attributs et méthodes
de la sous-classe
Cette facette de l’héritage peut en compliquer son utilisation
Exemple généralisation 89

Peut-on dire :
un carré est un rectangle ?
un cercle est une ellipse ?
Héritage :Spécialisation d’une classe d’association 90

émetteur récepteur
Facteur Personne
* *

Courrier

Lettre Colis
Héritage :Attention à l’héritage des associations ! 91

Les associations sont héritées mais pas complétement ! ! !


Le plus souvent, les contraintes des associations ne sont pas
transmises automatiquement de la super-classe vers la
sous-classe.
Les contraintes sont le plus souvent traduites par un bout de
code implanté dans la réalisation d’une opération.
Comme les langages permettent la redéfinition des opérations
dans les sous-classes, les programmeurs peuventéalisation dans
une des sous-classes.
Héritage : classe abstraite 92

Méthode abstraite
Une méthode est dite abstraite si on connaît son entête, mais pas
la manière dont elle peut être réalisée

Qu’est-ce qu’une classe abstraite ?


Une classe qui définit au moins une méthode abstrait
Classe qui ne peut être instanciée
Doit étre spécialisée en des classes non abstraites
n’existe qu’à travers les classes filles qui en héritent.
peut contenir des opérations abstraites(non définies)
Elle exprime une généralisation et ne correspond à aucun objet
existant dans le contexte.
Ces classes abstraites servent surtout pour la classification et
le polymorphisme.
Notation mot clé {abstract} ou nom en italique
Héritage : classe abstraite 93

Pourquoi des classes abstraites


Spécifier un comportement commun à plusieurs classes
Manipuler des instances de classes différentes de façon
uniforme
→ Polymorphisme

Bonne pratique
Dans une hiérarchie d’héritage, les classes qui ne sont pas des
feuilles sont généralement abstraites
Héritage : classe abstraite 94

Représentation Exemple

Classe mère abstraite Mammifère

Humain .... félin

Sous-classe fille
Homme Femme ...
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Implémentation Classe abstraite 95

public abstract class A {


...
}

David Célestin FAYE Modélisation avec UML 95/168


Héritage : multiple 96
Héritage : multiple
L’héritage multiple décrit le cas où une classe hérite son
comportement à partir de plusieurs classes. L’héritage multiple est
complexe à utiliser. Les concepteur du langage java ont préféré
l’abandonner au profit du concept d’interface. C++ le permet
Héritage : multiple 97
Héritage : multiple
L’exemple du transparent précédent est purement académique.
Dans la pratique, la modélisation de la figure ci-après en termes de
données sera souvent largement suffisante.
Héritage : Contraintes 98

La contrainte de partition :
Elle indique que toutes les instances d’une classe correspondent à
une et une seule instance des classes liées.
Représentation Exemple

Classe mère Société

{Partition} {Partition}

Classe fille 1 Classe fille 2 Client Prospect

XT

Toutes les sociétés sont soit clientes, soit considérées comme des
prospects.
Héritage : Contraintes 99
La contrainte d’exclusion
Un héritage est exclusif si les objets d’une classe fille ne peuvent
appartenir aussi à une autre classe fille.
Représentation Exemple

Classe mère Employe

{Exclusion} {Exclusion}

Classe fille 1 Classe fille 2 Directeur Commercial Directeur Financier

Ici, un employé ne peut pas être à la fois DC et DF. Mais tout employé
n’est pas directeur commercial ou directeur financier (contrainte de
partition).
Héritage : Contraintes 100

La contrainte de totalité
Toutes les instances d’une classe correspondent au moins à une des
instances des classes liées.
Représentation Exemple

Classe mère Pièce

{Totalité} {Totalité}

Classe fille 1 Classe fille 2 Pièce électrique Pièce Mécanique

Les Pièces vendues par l’entreprise sont électriques ou mécaniques


(certaines sont électromécaniques). Il n’existe pas d’autres possibilités.
Héritage : complet 101
Héritage : complet
Un héritage est complet si ses classes filles n’ont aucune
caractéristiques propres (attributs, méthodes, associations).
Représentation Exemple

Classe mère Personne


Nom : string
Prénom : string
DateNaiss : date

Classe fille 1 Classe fille 2


{XOR}
Homme Femme
Interfaces 102
Interface
Classe spéciale sans attribut dont toutes les opérations sont
abstraites
Ne peut être instanciée
Elle ne véhicule que la sémantique de ses opérations et ne dit
rien sur la façon de les implémenter.
doit être réalisée(implémentée) par des classes non abstraites
Une interface exprime un savoir-faire, un contrat à respecter
par les classes qui « réalisent »cette interface
On dit alors qu’une classe qui implémente ces opérations
implémente l’interface.

Pourquoi des interfaces ?


Utilisation similaire aux classes abstraites
En Java : une classe ne peut hériter de plus d’une classe, mais
elle peut réaliser plusieurs interfaces
Interfaces 103

On peut créer plusieurs interfaces et les faire hériter entre elles.


Les interfaces présentent un caractère d’aptitude que d’autres
classes ne peuvent encapsuler.
C’est ce qui permet de distinguer entre une généralisation et
une interface.
UML représente les interfaces :
soit au moyen de petits cercles reliés par un trait à l’élément
qui fournit les services décrits par l’interface
soit au moyen de classes avec le mot clé « « interface » ».
Cette notation permet de faire figurer dans le compartiment
des opérations la liste des services de l’interface.
Interfaces 104

Les relations possibles sur une interface sont :


La fourniture : Cette relation spécifie qu’une classe donnée
fournit l’interface à ses clients. Une classe peut fournir
plusieurs interfaces à ses clients et chaque interface définit un
des services de la classe.
L’utilisation : Cette relation concerne toute classe client qui
souhaite accéder à la classe interface de manière à accéder à
ses opérations.
La réalisation : Cette relation n’est utilisée que pour les
interfaces. Une réalisation est une relation entre une classe et
une interface. Elle montre que la classe réalise les opérations
offertes par l’interface.
Interfaces 105

Modélisation de 2 interfaces crédit et assurance d’une classe


banque. Une relation de réalisation indique que la classe banque
réalise l’interface assurance.
Crédit Banque
« « utilise » »
Entreprise
0..*

« « utilise » »

Client

« « utilise » »
« « Interface » »
Assurance
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Implémentation Interface 106


« Interface » « Interface »
la lb

« uses » « uses »
« Interface »
ld
C
public interface Ia {
...
}
public interface Ib {
...
}
public interface Id extends Ic {

}
public class C implements Ia , IB {
...
}
David Célestin FAYE Modélisation avec UML 106/168
Le modèle de classes de UML Le modèle de classes de UML
Les diagrammes d’objet Transformation du diagramme de classe en schéma relationnel.

Méthode de d’analyse des interfaces 107


Pour trouver les interfaces du système, il faut examiner toutes
les paires : acteurs physiques - scénario. On a intérêt à
créer dans un premier temps au moins une classe interface par
cas d’utilisation.
Les interfaces se trouvent à un haut niveau d’abstraction. On
commence par renseigner les besoins en interfaces utilisateur
sans les implémenter. Ces classes seront affinées au fur et à
mesure.
On a intérêt à regrouper les interfaces dans un paquetage à
part.
En utilisant des interfaces plutôt que des classes, on sépare les
traitements de leur interface. Ainsi, on facilité l’évolution des
applications et leur adaptations à différents environnement
d’interface.

David Célestin FAYE Modélisation avec UML 107/168


Packages 108

Un package(paquetage) permet de regrouper un ensemble de


classes, d’associations et éventuellement d’autres packages
selon des critères purement logiques
Il permet de découper une système en plusieurs parties
représentées chacune par un package.
Ils permettent d’encapsuler des éléments de modélisation
Ils permettent de structurer un système en catégories (vue
logique) et sous-systèmes (vue des composants)
Les packages peuvent avoir des actions entre eux.
Un paquetage est l’élément d’organisation du modèle, tout
comme un répertoire organise des fichiers dans un ordinateur.
Ils représentent le bon niveau de granularité pour la
réutilisation
Packages 109

Une classe peut apparaître dans différents packages (avec le


même nom).
On y trouve même des classes qui n’appartiennent pas au
package mais qui sont référencées par les classes propres.
On désigner une classe d’un package par :
nomPackage :: nomClasse
Packages 110
Un paquetage définit un espace de nom, de sorte que deux
éléments différents, contenus par deux paquetages différents,
peuvent porter le même nom.
Packages 111
Relation entre paquetage
Dépendance
Au moins un élément du paquetage source utilise les services
d’au moins un des éléments du paquetage destination

Héritage
Au moins un élément du paquetage source spécialise (est
dérivée d’) au moins un des éléments du paquetage destination
Packages 112
Convention graphique

P1 P2

P4
P3
P5
P6
Packages 113
Exemple
Packages 114
Exemple
Stéréotype
Les stéréotypes font partie des mécanismes extensibilités,
prévus par UML.
Un stéréotype permet la métaclassification d’un élément
d’UML.
Il permet aux utilisateurs (méthodologistes, constructeurs
d’outils, analystes et concepteurs) d’ajouter de nouvelles
classes d’éléments de modélisation, en plus du noyau prédéfini
par UML.
C’est un concept qui permet des regroupements de classes,
d’associations, de méthodes, d’attributs, de package, etc.
Il permet de créer des familles d’éléments associés à un même
stéréotype.

Exemple
L’interface est un exemple de stéréotype.
Quelques classes particulières 116

Les classes de variables et d’opérations globales : stéreéotype


«utility»

« utility »
Math

PI=3.14

Sinus(angle):Réel
Cosinus(angle):Réel
Tangente(angle):Réel
Quelques classes particulières 117
Les classes paramétrables : template
Une classe paramétrable est un modèle de classe.
Une classe paramétrable a des paramètres formels. Chaque
paramètre possède un nom, un type et une valeur par défaut
optionnelle.
Une classe paramétrable est liée à des paramétres effectifs
pour devenir une classe paramétrée qui pourra être instanciée.

Paramètres formels

Classe paramétrable
Quelques classes particulières 118
Les classes paramétrables : exemple

Element
Liste

« lie »( voitures)

Liste de voitures Liste de personnes

Ce type de classe apparaît rarement au début de la


modélisation.
A noter que les classes paramétrables peuvent être remplacées,
de façon moins élégante, par des généralisations :
Erreurs communes à éviter 119

Supprimer les associations non pertinentes


Association redondante
Une association qui relie directement une entité A à une entité
B est considérée redondante si transitivement A est par
ailleurs associé à B par une chaîne d’associations dont les
terminaisons d’ arrivée sont toutes de multiplicité 1..1.
conséquences possible : incohérence dans le modèle si la
multiplicité sur sa terminaison d’arrivée (lecture de A vers B)
est autre que 1..1.
Erreurs communes à éviter 120
Supprimer les associations non pertinentes

L’association Émet qui relie une occurrence de Facture à une seule


occurrence de Représentant est redondante car les deux
associations Fait suite et Prise en charge relient indirectement
Facture à Représentant. seul représentant, donc par transitivité
une facture mène à un seul représentant.
Erreurs communes à éviter 121

Chaîne d’Associations binaires


trois entités A, B et C peuvent être associées à l’aide de deux
associations binaires
En utilisant deux associations, il existe théoriquement trois
façons d’associer les entités : A − B − C , B − C − A ou
B −A−C
il faut choisir celle qui permet une lecture des associations
avec des terminaisons d’arrivée dont la multiplicité maximale
est de 1 partout
Erreurs communes à éviter 122

Chaîne d’Associations binaires : piège du centre


on veut modéliser le lien qui existe entre Employé, Division
et Filiale.

ici, pour un employé on peut établir dans quelle division il


travaille, mais il est impossible d’établir dans quelle filiale, car
une division comporte plusieurs filiales
solution : ajouter une troisième association entre Employé et
Filiale permettant d’établir dans quelle filiale travaille l’employé
cependant on peut l’éviter en réorganisant les liens entre les
trois classes
Erreurs communes à éviter 123

Chaîne d’Associations binaires : piège du centre


solution : en placer Filiale au centre de la chaîne des
associations

Cette fois la lecture des associations de Employé vers


Division montre deux terminaisons d’arrivée avec multiplicité
maximale de 1 pour chacune.
Cela signifie que pour un employé, il sera possible de
déterminer sa filiale qui est unique et de connaître
transitivement sa division sans ajouter une troisième
association
Erreurs communes à éviter 124

Chaîne d’Associations binaires : piège du centre


Principe
Si on doit relier trois classes par deux associations binaires, il faut
choisir les associations de manière à ce qu’une des deux lectures
possibles de la chaîne, liant la première classe à la troisième, ait des
terminaisons d’arrivée avec multiplicité maximale de 1 sur chaque
association.
Erreurs communes à éviter 125

Chaîne d’Associations binaires : piège du néant

impossible de faire le lien entre une filiale et l’ensemble des


propriétés administrées.
la présence d’une multiplicité 0..1 à la terminaison de départ
de l’association Administre indique que certaines propriétaires
peuvent ne pas être administrées par un employé
pour une filiale, on peut retrouver ses employés, mais comme
certaines propriétés ne sont pas liées à un employé, il est
impossible dans certains cas de connaître toutes les propriétés
de la filiale.
Erreurs communes à éviter 126

Chaîne d’Associations binaires : piège du néant


Les associations Emploie et Administre. étant toutes deux
pertinentes la solution consiste à ajouter une association directe
entre Filiale et Propriété, comme le montre la figure ci dessous
Erreurs communes à éviter 127

Chaîne d’Associations binaires : piège du néant


Principe
Soit deux associations binaires reliant trois entités, la présence
de la multiplicité minimale à 0 sur une terminaison de départ
d’une des deux associations ne permet pas de lier une
occurrence de la première entité à toutes les occurrences
possibles de la troisième entité
Il sera le cas échéant nécessaire d’établir une association
directe entre la première et la troisième entité.
Erreurs communes à éviter 128

Problème Navigabilité

Navigabilité : En l’absence de réservations, on ne peut accéder ni


aux chambres ni aux clients
Règles de validation 129

Appliquer les règles de validation des principes de


normalisation du modèle relationnel au niveau du diagramme
de classes UML.
ces règles permettront d’assurer la cohérence de la base de
données.
Elles sont basées sur les propriétés des dépendances
fonctionnelles et préparent correctement le passage à SQL
Ces règles limitent les risques d’erreurs de modélisation lourdes
de conséquences au niveau de la base de données.
Règles de validation 130

Tous les attributs sont élémentaires dans le sens où ils doivent


être non décomposables
Un attribut doit apparaître une seule fois dans le diagramme,
soit au sein d’une classe, soit dans une association (ou
classe-association).
Première forme normale
le schéma ne doit pas contenir d’attribut multivalué (même si
UML permet de le faire)
si chaque attribut est en dépendance fonctionnelle avec
l’identifiant de la classe.
Règles de validation 131
2NF Chaque attribut d’une classe-association doit dépendre
entièrement des identifiants des classes connectées à la
classe-association.
Exemple de passage en 2NF(codeMat → coeff )
Etudiant Matière
nEtu 0..*
0..* CodeMat
NomEtu
libellé

Evaluer
note 2NF
coeff

Etudiant Matière
nEtu 0..* CodeMat
0..*
NomEtu Libellé
coeff

Evaluer
note
Règles de validation 132
3NF : Chaque attribut d’une classe doit dépendre entièrement
et directement des identifiants des classes connectées à la
classe et non d’un attribut non clé.
Exemple de passage en 3NF
Voiture
noImmat
constructeur
Puissance
modele
nomProprio
PrenomProprio
couleur Voiture
appartient noImmat être
couleur
1..* 1..*

1..1 1..1
Propriétaire NoModèle
noProprio noModèle
nomProprio Modèle
prenomProprio Constructeur
puissance
Règles de validation 133
Forme normale de Boyce Codd
Aucun attribut d’une classe-association ne doit être en DF
avec un identifiant d’une des classes connectée à l’association.
Exemple de passage en BCNF
TypeCulture Pays
nomType nomPays
* *

Production
nomRegion
BCNF

TypeCulture Pays
nomType nomPays

*
1
Production
nomRegion
* *
Règles de validation 134
Décomposition des n-aires : association mode ?lise ?e par un losange
logiciel
*

* 1
Departement serveur

Installation
dateInstallation

un logiciel d’un département ne doit être installé que sur un


seul serveur ; La contrainte d’unicité apparaît explicitement
(multiplicité 1 du côté Serveur).
Une association n-aire avec contrainte se représente plus
facilement avec UML par une ou plusieurs
classes-associations reliant les n classes.
Règles de validation 135
Décomposition des n-aires : association mode ?lise ?e par un losange
Utilisation d’une classe-association
prise en compte explicite de la contrainte d’unicité qui
concerne l’installation des logiciels : un logiciel d’un
département n’est installé que sur un seul serveur.

Département logiciel
* *

Installation
* 1
dateInstallation serveur

on met en évidence qu’une installation (constituée d’un logiciel et


d’un département à une date donnée) est associée à un seul serveur
(multiplicité 1 du côté Serveur).
Règles de validation 136

Décomposition des n-aires : Décomposition d’une classe stéréotypée


<<Association>>
Sociétaire contrat Véhicule
numSocietaire 1 1..* 1 1 numImmat
nom modele

1..*

1
Assurance
numAssurance
NomAssurance
siègeSocial

Un véhicule n’est assuré que par une seule compagnie


(multiplicité 1 du côté Contrat).
La valeur de cette multiplicité impose la décomposition de
l’association 3-aire en deux associations binaires.
Règles de validation 137
Décomposition des n-aires : Décomposition d’une classe stéréotypée

Sociétaire Véhicule
numSocietaire 1 possède 1..* numImmat
nom modele

1..*

Assurance contrat
numAssurance
NomAssurance
siègeSocial 1
La transformation, pourquoi ? 138

Objectifs
représenter toutes les informations présentes dans le
diagramme des classes (classes et associations) ;
éviter les redondances(répétition des mêmes associations) ;
limiter le nombre de relations(schéma complexe) ;
limiter les valeurs absentes (e.g., les valeurs NULL).
Remarques
la correspondance entre le modèle objet et le modèle
relationnel n’est pas une tâche facile.
En effet, elle ne peut que rarement être complète puisque
l’expressivité d’un diagramme de classes est bien plus grande
que celle d’un schéma relationnel.
Par exemple, comment représenter dans un schéma relationnel
des notions comme la navigabilité ou la composition ?
Transformation de la classe d’objet 139
La classe se transforme en une table (relation)
les attributs de la classe deviennent des attributs de la table
choisir un attribut (ou groupe d’attribut) de la classe pouvant
jouer le rôle de clé primaire ; si aucun attribut ne convient, il
faut en ajouter un à la table

Etudiant
noEtu
NomEtu Etudiant(noEtu,nomEtu,age)
age
Transformation des associations 140
Association binaire de type plusieurs [(1..∗) ou (0..∗)] à un [(1..1)
ou (0..1)]
ajouter un attribut de type clé étrangère dans la relation à
multiplicité plusieurs de l’association.

Employe Departement
noEmp 1..* 1 noDep
nomEmp nomDep
anciennete budget

Departement(noDep,nomDep,budget)
Employe(noEmp,nomE,#noDep)
Transformation des associations 141
Association binaire de type plusieurs [(1..∗) ou (0..∗)] à un [(1..1)
ou (0..1)]
ajouter un attribut de type clé étrangère dans la relation à
multiplicité plusieurs de l’association.

Commande Client
noComm 0..* 1..1 noClient
dateComm nomClient
adresse

Client(noClient,nomClient,adresse)
Commande(noComm,dateComm,#noClient)
Transformation des associations 142
liaison plusieurs (0..∗ ou 1..∗) à plusieurs (0..∗ ou 1..∗)
L’association ou la classe-association devient une relation. La
clé primaire est composée des clés primaires des relations
obtenues.
Les attributs éventuels de la classe-association deviennent des
attributs de la nouvelle relation.
Etudiant Matiere
noEtu 0..* 0* codeMat
nomEtu libellé
adresse volHoraire

Inscrire
Etudiant(noEtu,nomEtu,adresse)
dateInscr Inscription(#noEtu,#codeMat,dateInscr)
Matière(codeMat,libellé,volHoraire)
Transformation des associations 143
liaison plusieurs (0..∗ ou 1..∗) à plusieurs (0..∗ ou 1..∗)

Fournisseur Produits
NoFourn 1..* 1..* codeProduit
nomfourn designation
ville

Fournir
prix Fournisseur(noFourn,nomFourn,ville)
Fournir(#noFourn,#codeProduit,prix)
Produits(codeProduit,designation)
Transformation des associations 144
Association binaire de type un [(0..1) ou (1..1)] à un [(0..1) ou
(1..1)]
Il faut ajouter un attribut de type clé étrangère dans la relation
dérivée de la classe ayant la multiplicité minimale égale à un.
Si les deux multiplicités minimales sont à 1, il faidrait de
fusionner les deux entités
Secrétaire Enseignant
noSecret matriculeEns
nom 0..1 1 Nom
dateRecrut grade

Secretaire(noSecret,nom,dateRecrut,#matriculeEns)
Enseignant(matriculeEns,Nom,grade)
transformation des associations 145
Association Reflexive

composante 1..*
Piece composer
Pièce(numPiece,designation)
numPiece 1..* composer(#numPiece,#numPieceComposée)
désignation
composite

0..1 est responsable de


Personne
numPers Personne(numPers,nom,fonction,société,#numChef)
nom 1..*
fonction
société
transformation des associations 146
Association Reflexive

composante 1..*
Piece composer
Pièce(numPiece,designation)
numPiece 1..* composer(#numPiece,#numPieceComposée)
désignation
composite

0..1 est responsable de


Personne
numPers Personne(numPers,nom,fonction,société,#numChef)
nom 1..*
fonction
société
Transformation des associations 147

Cas de l’héritage
3 familles de décomposition :
Décomposition par distinction
Décomposition descendante (push-down)
Décomposition ascendante (push-up)
Transformation des associations 148

Cas de l’héritage : Décomposition par distinction


Transformation de chaque sous-classe en une relation
Migration de la clé primaire de la sur-classe dans la ou les
relations issues des sous-classes
La clé primaire de la sur-classe devient à la fois clé primaire et
clé étrangère
Transformation des associations 149
Cas de l’héritage : Décomposition par distinction

Personnel
Personnel(matricule,nom,prénom,sexe)
matricule
Nom Enseignant(matricule#,grade,échelon,indice)
prénom
sexe PATS(matricule#,dateEmbauche,service)

Enseignant PATS
grade DateEmbauche
échelon service
indice
Transformation des associations 150

Cas de l’héritage : Décomposition descendante (push-down)


Deux cas possibles selon la contrainte d’héritage :
Contrainte de totalité ou de partition sur l’association :
Possibilité de ne pas traduire la relation issue de la sur-classe
→ Migration de tous les attributs dans la ou les relations
issues de la ou des sous-classes
Sinon : Migration de tous les attributs dans la ou les relations
issues de la ou des sous-classes
→ Duplication des données
Transformation des associations 151
Cas de l’héritage : Décomposition descendante (push-down)
Contrainte de partition :
Aucun personnel ne peut être à la fois enseignant et PATS
Il n’existe pas non plus un personnel n’étant ni enseignant ni
PATS.
Personnel
matricule
Nom Enseignant(matricule,nom,prénom,sexe,grade,échelon,indice)
prénom
sexe PATS(matricule,nom,prénom,sexe,dateEmbauche,service)

Enseignant PATS
grade DateEmbauche
échelon service
indice
Transformation des associations 152
Cas de l’héritage
Décomposition ascendante (push-up)
Suppression de la ou les relations issues de la ou des
sous-classes
Migration des attributs dans la relation issue de la sur-classe
Exemple : (absence de contrainte)
Personnel
matricule
Nom Personnel(matricule,nom,prénom,sexe,grade,
prénom échelon,indice,dateEmbauche,service)
sexe

Enseignant PATS
grade DateEmbauche
échelon service
indice
transformation des associations 153
Agrégations UML
l’agrégation partagée de UML se traduit au niveau logique
comme une simple association,
il n’en est pas de même pour la composition.
La clé primaire des relations déduites des classes composantes
doit contenir l’identifiant de la classe composite (quelles que
soient les multipliciés). Dans le cas de la composition, il faut
prévoir des delete en cascade
Composant Composite
a 0..1 c
b 1 d
0..*
1..*

Composite(c, d)
Composant(a,c#, b)
154
Expression de la contrainte de partition

Tous les objets d’une classe participent à l’une des deux


associations mais pas aux deux, ni à aucune des deux
Societe

numS
1..* possède 1
Compte
{Partition}
numC 1..* 1
possède Particulier

numP

CONSTRAINT ck_compte_partition
CHECK ((numS is NOT NULL OR numP is NOT NULL)
AND
NOT (numS is NOT NULL AND numP is NOT NULL))
transformation des associations 155
Expression de la contrainte d’exclusion
Tous les objets d’une classe peuvent participer à l’une des deux
associations, mais pas aux deux à la fois.

Un pilote peut être au repos.Si un pilote est affecté à une mission,


alors il ne peut être affecté à un vol d’exercice
Mission et réciproquement.

numM
1..* Est affecté 1
Pilote
{XOR}
numP 1..* 1
Est affecté Exercice

numEx

CONSTRAINT ck_compte_exclusion CHECK (numM is NULL OR numEx


is NULL);
Transformation des associations 156
Expression de la contrainte de totalité

Tous les objets d’une classe participent au moins à une association

Un pilote soit affecté à la fois à une mission et à un vol d’exercice,


et tous les pilotes participent à au moins une mission.
Mission

numM
1..* Est affecté 1
Pilote
{totalité}
numP 1..* 1
Est affecté Exercice

numEx

CONSTRAINT ck_compte_totalite CHECK (NOT (numM is NULL AND


numEx is NULL));
Transformation des associations 157
Expression de la contrainte de simultanéité

Si un objet d’une classe participe à l’une des deux associations,


alors elle participe également à l’autre

Un pilote peut être affecté à la fois à une mission et à un vol


d’entraînement. Il peut également n’être affecté à aucune mission.
Mission

numM
1..* Est affecté 1
Pilote
{simultanéité}
numP 1..* 1
Est affecté Exercice

numEx

CONTRAINT ck_compte_simultanéité CHECK ((numM is NULL AND


numE is NULL) OR (numM is NOT NULL))
... 158
Le modèle de classes de UML
Les diagrammes d’objet

Plan 159

1 Le modèle de classes de UML


Le modèle de classes de UML
Transformation du diagramme de classe en schéma
relationnel...

2 Les diagrammes d’objet

David Célestin FAYE Modélisation avec UML 159/168


Le modèle de classes de UML
Les diagrammes d’objet

Les Diagrammes d’UML 160


Diagramme

Diagramme Diagramme
De structure comportemental

Diagramme Diagramme Diagramme Diagramme Diagramme de


de classes de packages de d'objets d'activités Cas d'utilisation

Diagramme Diagramme Diagramme de Diagramme Diagramme de


de composants de déploiement Structure composite d'interaction Transition d'état

Diagramme Diagramme de
De séquence communication

Diagramme Diagramme
Vue d'ensemble De timing
Des interactions

David Célestin FAYE Modélisation avec UML 160/168


Les diagrammes d’objet 161

diagrammes d’objet
Z Objectif : Représenter les objets et leurs liens à un instant
donné
décrire l’image d’un système à un instant donné
Z C’est un diagramme orienté développeur. : documenter des cas
de test, analyser des exemples, ..
vérifier l’adéquation d’un diagramme de classe à différents cas
possibles
Z montre des objets (instances de classes dans un état
particulier) et des liens (relations sémantiques) entre ces objets
Les diagrammes d’objet 162

Z Nœuds du graphe = Objets


Possibilité de supprimer le nom, la classe et/ou les attributs
(objet anonyme, non typé ou d’état inconnu)
Z Arêtes du graphe = Liens entre objets
Lien binaire : entre 2 objets
Lien n-aire : entre n objets
Possibilité de nommer les liens et les rôles
Z Correspondance entre liens et attributs
Z La représentation séapparente à celle d’un diagramme de
classes.
Z On représente les objets et pas les classes, donc pas les liens
d’héritage.
Correspondances entre diagramme de classes et d’objets 163

Diagramme de classe : montre une abstraction de la réalité


basée sur l’expression de structure statique d’un point de vue
général
Diagramme d’objets : représente plutôt un cas particulier, une
situation concrète à un instant donné ;il exprime à la fois la
structure statique et un comportement
Correspondances entre diagramme de classes et d’objets 164
Constructeur d’objet 165

Création de l’instance par activation du constructeur :


new <nom classe> (<paramètres>)
Les valeurs des paramètres peuvent êtres affectéées aux
attributs de l’objet par le constructeur
L’état de l’objet créé dépend :
de la méthode de fabrication définie dans le constructeur
des paramètres fournis au constructeur
destructeur d’objet 166

L’appel du destructeur permet de supprimer l’instance :


delete(objet)
La destruction d’un objet complexe peut impliquer la
destruction d’autres objets pour respecter des contraintes
d’intégrités, sinon l’ensemble des instances devient incohérent
Les diagrammes d’objet 167

nomObjet : classeObjet

nomAttr_1 = val_1
nomAttr_2 = val_2
...

o1:C1 o2:C2

o1:C1 o2:C2

o3:C3
Les diagrammes d’objet :Exemple 168

Vous aimerez peut-être aussi