Slides UML Diagrammes Classes Objets
Slides UML Diagrammes Classes Objets
Slides UML Diagrammes Classes Objets
UFR SAT/UGB
3 mai 2023
Plan 2
Plan 3
Diagramme Diagramme
De structure comportemental
Diagramme Diagramme de
De séquence communication
Diagramme Diagramme
Vue d'ensemble De timing
Des interactions
Objet
Entité qui a des propriétés structurelles et comportementales.
Exemple
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.
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
service
Message
interface
METHODES METHODES
Objet Récepteur
Messages 19
Exemple
Notion d’association 23
Association Vs Lien 24
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
Une classe association est une classe comme les autres et peut à ce
titre peut participer à d’autres associations
Notion de classe d’association 32
Personne Entreprise
Nom 1..* * Nom
Prenom
dnaiss
Emploi
intitulé
début
fin
Personne Entreprise
Nom 0..* 0..* Nom
Prenom
dnaiss employé employeur
Emploi
-intitulé
-salaire
**********
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.
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
Personne Société
Nom Nom
Prenom * {bag} {bag} *
dnaiss détenteur gérant
Action
-dateAchat
-quantité
-prix
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
A qualificatif
* B
{sous-ensemble} *
Association qualifiée
association contenant un ou plusieurs attributs qualificateurs
Association qualifiée 40
Association qualifiée 41
Banque
Personne
compte
* 0..2
Association qualifiée 42
Banque
Personne
compte
* 0..2
Batiment
Salle
Situer
Nom numeroSalle capacité
nbEtages 1 1
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
Personne
chef
subordonne 0..*
Electeur Candidat
vote
* 0..1
Association navigable 49
Personne Entreprise
employé employeur
Commande Produit
x
ligne produit
Personne Entreprise
employeur
employé
Personne Entreprise
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
}
1..* *
Produit Commande
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
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
* *
Associer Audience
Atrributs[:type] tauxAudience
[Méthodes]
Association n-aire : contrainte d’unicité 57
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
* 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)
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
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
* *
Exemple
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
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
Classe 1 Candidat
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
1..* 1..*
Pays Ville
villes
nom nom
langue {refine} population
monnaie 1 surface
capitale Ville
Spécialisation
Atrributs[:type]
[Méthodes]
Héritage (implémentation) 85
public class A {
...
}
public class B extends A {
...
}
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]
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
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
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
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.
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
{Partition} {Partition}
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
{Exclusion} {Exclusion}
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
{Totalité} {Totalité}
« « 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.
« 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.
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
« 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)
Problème Navigabilité
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
Département logiciel
* *
Installation
* 1
dateInstallation serveur
1..*
1
Assurance
numAssurance
NomAssurance
siègeSocial
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
composante 1..*
Piece composer
Pièce(numPiece,designation)
numPiece 1..* composer(#numPiece,#numPieceComposée)
désignation
composite
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
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
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
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.
numM
1..* Est affecté 1
Pilote
{XOR}
numP 1..* 1
Est affecté Exercice
numEx
numM
1..* Est affecté 1
Pilote
{totalité}
numP 1..* 1
Est affecté Exercice
numEx
numM
1..* Est affecté 1
Pilote
{simultanéité}
numP 1..* 1
Est affecté Exercice
numEx
Plan 159
Diagramme Diagramme
De structure comportemental
Diagramme Diagramme de
De séquence communication
Diagramme Diagramme
Vue d'ensemble De timing
Des interactions
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
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