MCDC -
Diagramme de classes
Ileana Ober
Université Paul Sabatier
IRIT
[Link]
Année Universitaire 2023-2024
©Ileana Ober
Une démarche
(classes métier)
+ diags activité
(processus métier)
Adapté de
"UML : modéliser un site e-commerce",
Pascal ROQUES, Eyrolles, 2002
Plan
✤ Notions de base
✤ Conformité
diagramme de classes - système modélisé,
diagramme d’instances - diagramme de classes
✤ Concepts avancés
✤ Usage des diagrammes de classes
Notions de base
✤ Classe
✤ Objet
✤ Association
✤ Héritage
✤ Contrainte
Classe UML
Compte Nom de la classe
Attributs
découvertMax : Entier
nom : type
solde : Réel
Opérations
consulterSolde : Réel nom
créditer (somme:Réel) liste paramètres
(avec leur types)
type de retour
inv: solde > découvertMax
Notations pour la classe
Compte Compte Compte
découvertMax : Entier consulterSolde : Réel
Compte solde : Réel créditer (somme:Réel)
✤ noms de classes (et types) en majuscule
✤ nom d’attributs et opérations en minuscule
Objet UML
comptePaul:Compte :Compte comptePaul
comptePaul:Compte
découvertMax = 1000
solde =456
✤ noms d’objets commencent par une minuscule
✤ nom soulignés = noms d’instance
Classe et Objet
Compte
découvertMax : Entier
✤ Une classe spéci e la structure et le
solde : Réel
comportement d’un ensemble d’objets
consulterSolde : Réel
✤ La structure d’une classe est constante créditer (somme:Réel)
comptePaul:Compte
✤ Une classe existe pendant toute l’exécution
découvertMax = 1000
✤ Les objets sont crées ou détruits pendant solde =456
l’exécution compteMarie:Compte
✤ La valeur des attributs des objets varie découvertMax = 1500
solde =345
fi
Lien - connexion entre objets
titulaire
marie: Personne c1: Compte
compte
pierre: Personne titulaire compte c2: Compte
titulaire
anna: Personne c3: Compte
compte
Liens
titulaire compte
marie: Personne compte c1: Compte
titulaire
épouse époux
épouse époux
marie: Personne paul: Personne
épouse époux
Au maximum un lien d’un type donné entre les
mêmes deux objets
(contrainte qui pourra être relachée plus tard)
Rôles
aPourCompte▶
marie: Personne titulaire compte c1: Compte
✤ Chacun des deux objets joue un rôle dans le lien
✤ Le nom de ce rôle apparaît sur le lien du côté de l’objet
marie est titulaire du compte c1
c1 est le compte de marie
✤ Si le nom de rôle est omis on utilise le nom de la classe
Associations
✤ Une association regroupe un ensemble de liens
aPourCompte classes+
Personne Compte associations
marie: Personne aPourCompte▶ c1: Compte
pierre: Personne aPourCompte▶ c2: Compte
objets+ liens
anna: Personne aPourCompte▶ c3: Compte
Association - Lien
✤ Un lien relie 2 objets
✤ Une association relie 2 classes
✤ Un lien est une instance d’association
✤ Une association donne le type d’un ensemble de liens
✤ Un lien peut être crée détruit pendant l’exécution
✤ Une association ne varie pas à l’exécution
titulaire
Personne Compte
compte
marie: Personne titulaire c1: Compte
compte
Nom des associations
aPourCompte▶
Personne Compte
titulaire comptes être cohérent
Personne Compte
Personne Compte
titulaire comptes
privilégier les
Personne noms de rôle
Compte
titulaire
aCommeClient
Personne Compte
titulaire comptes
aPourCompte▶
Personne Compte
privilégier les
Rôles et navigation noms de rôle
aPourCompte▶
Personne Compte
titulaire comptes
marie: Personne titulaire aPourCompte▶ comptes c1: Compte
[Link] = {c1}
titulaire aPourCompte▶
[Link] = {c2, c3} pierre: Personne
comptes
c2: Compte
titulaire
[Link] = ∅ anna: Personne aPourCompte▶ c3: Compte
comptes
[Link] = {marie}
[Link] = {pierre}
[Link] = {anna}
Cardinalité d’une association
✤ précise combien d’objets peuvent être liés (à un certain moment)
✤ donne la cardinalité minimale et maximale
✤ les cardinalités sont des contantes
1 aPourCompte▶ *
Personne Compte
titulaire comptes
Une Personne a 0 ou plusieurs comptes Une Compte a 1 titulaire
marie: Personne titulaire aPourCompte▶ comptes c1: Compte
titulaire aPourCompte▶
pierre: Personne c2: Compte
comptes
titulaire
anna: Personne aPourCompte▶ c3: Compte
comptes
Associations réflexives
✤ Rien n’empêche les parents
associations ré exives
Personne
2
* enfants
✤ Une association ré exive
n’implique pas un lien estParentDe▶
ré exif
ana victor anïssa
parents parents
parents parents parents
parents parents
jo jean myriam farah
parents
fl
fl
fl
Contraintes entre des associations
titulaires
Client Compte Attention aux
1..4 *
1 contraintes évidentes qui
signataire 1
peuvent mener à des mauvais
CarteBleue modèles
* *
titulaires
sarah:Client c1:Compte
signataire
cb1:CarteBleue
titulaires
anïssa:Client titulaires c2:Compte
titulaires
ana:Client c3:Compte
signataire
cb2:CarteBleue
Contraintes entre des associations
titulaires
Client 1..4 * Compte
1 Le signataire de la carte bleue
signataire 1
associée à un compte est l’un
CarteBleue des titulaires de ce compte
* *
titulaires
sarah:Client c1:Compte
signataire
cb1:CarteBleue
titulaires
anïssa:Client titulaires c2:Compte
titulaires
ana:Client c3:Compte
signataire
cb2:CarteBleue
Contraintes entre des associations
titulaires
Client 1..4 * Compte
1 Le signataire de la carte bleue
signataire 1
associée à un compte est l’un
CarteBleue des titulaires de ce compte
* *
✤ Les contraintes peuvent s’exprimer de manière précise avec des
langages de contrainte (OCL - Object Constraint Language)
context CarteBleue
inv: [Link] -> includes [Link]
Généralisation / Spécialisation
✤ Une classe peut généraliser une (ou plusieurs) autre(s) classe(s)
Animal Compte
Vertébré Invertébré CompteEpargné
Mammifère Oiseau Relation d’héritage
Relation de
sous-typage
Héritage
Compte * 1 Banque
découvertMax : Entier
solde : Réel inv: solde > découvertMax
consulterSolde : Réel
créditer (somme:Réel)
CompteEpargne
inv: tauxIntérêt < 100
tauxIntérêt: Réel
Les classes héritent des
attributs, opérations, associations et
ajouterIntérêts()
contraintes des super-classes
Héritage
Compte Banque
découvertMax : Entier * 1
solde : Réel
inv: solde > découvertMax CompteEpargne
consulterSolde : Réel
créditer (somme:Réel) découvertMax:Entier
solde:Réel
CompteEpargne inv: tauxIntérêt < 100
tauxIntérêt: Réel
tauxIntérêt: Réel
consulterSolde : Réel
ajouterIntérêts()
1 * créditer (somme:Réel)
Banque ajouterIntérêts()
inv: solde > découvertMax
inv: tauxIntérêt < 100
Redéfinition des opérations
Polymorphisme
✤ Une opération peut être redé nie dans une sous-classe
✤ Permet d’avoir des méthodes spéci ques dans le contexte de
chaque classe
Animal a;
Animal
if <condition>
cri ()
a = new (Chien)
else
a=new (Chat)
Chien Chat
endif Le corps de cette
cri () cri ()
[Link](); opération est lié
cri() { miaou}
uniquement à l’exécution
cri() { ouaf-ouaf}
fi
fi
Classes abstraites
✤ Certaines classes sont
Animal
présentes uniquement pour
structurer l’hiérarchie
d’héritage =>
Vertébré Invertébré classe abstraite
(antonyme classe concrète)
✤ Une classe abstraite ne peut
Mammifère Oiseau pas être instanciée
✤ Utile pour dé nir un
comportement abstrait
Chien Chat
✤ Notation: nom en italique
fi
Méthodes abstraites
✤ Certaines méthodes sont
présentes uniquement pour
Animal
dé nir un comportement
abstrait
cri ()
✤ Notation: nom en italique
Chien Chat ✤ Elles sont présentes dans des
cri () cri () classes abstraites
cri() { ouaf-ouaf} cri() { miaou}
✤ Doivent être raf nées dans les
classes concrètes
fi
fi
Héritage multiple
Animal
✤ Une classe peut hériter
Herbivore Carnivore
plusieurs super-classes
✤ Interdit en certains langages de
Omnivore programmation (Java, C#)
✤ Autorisé par défaut en UML
Plan
✤ Notions de base
✤ Conformité
diagramme de classes - système modélisé,
diagramme d’instances - diagramme de classes
✤ Concepts avancés
✤ Usage des diagrammes de classes
Conformité
Diagramme instances - diagramme classes
parents
✤ Est-ce que c’est conformé? Personne
2
* enfants
Pas conforme au
diagramme de classes estParentDe▶
ana victor anïssa
parents parents
parents parents parents
parents parents
jo jean myriam farah
parents
Conformité
Diagramme de classes - système modélisé
parents
✤ Est-ce que c’est conformé? Personne
0..2
Conforme au * enfants
diagramme de classes
estParentDe▶
Pas conforme à la
réalité
ana victor anïssa
parents parents
parents parents parents
parents parents
jo jean myriam farah
parents
Rajouter des contraintes
parents
Personne
La relation estParentDe 0..2
* enfants
est acyclique
estParentDe▶
ana victor anïssa
parents parents
parents parents parents
parents parents
jo jean myriam farah
parents
Tester le modèle est indispensable
✤ tester les cardinalités veuve
Personne
*
✤ tester la terminologie
* veuf
✤ identi er les contraintes manquantes
Un modèle non testé est
fort probablement erroné
fi
Tester le modèle est indispensable
✤ tester les cardinalités veuve
Personne
*
✤ tester la terminologie
* veuf
✤ identi er les contraintes manquantes
fi
Tester le modèle est indispensable
✤ tester les cardinalités veuve
Personne
*
✤ tester la terminologie
* veuf
✤ identi er les contraintes manquantes
veuf veuve
victor myriam
veuf
jean farah
veuve
fi
Tester le modèle est indispensable
✤ tester les cardinalités veuve
Personne
*
✤ tester la terminologie
* veuf
✤ identi er les contraintes manquantes
veuf veuve
victor myriam
veuve pierre
veuf veuf
jean farah
veuve
fi
Tester le modèle est indispensable
✤ tester les cardinalités conjointDécédé
Personne
*
✤ tester la terminologie
*
✤ identi er les contraintes manquantes
conjointDécédé
victor myriam
conjointDécédé pierre
jean conjointDécédé
farah
fi
Tester le modèle est indispensable
✤ tester les cardinalités conjointDécédés
Personne
*
✤ tester la terminologie
*
✤ identi er les contraintes manquantes
conjointDécédés
victor myriam
conjointDécédés pierre
jean farah
conjointDécédés
fi
Tester le modèle est indispensable
✤ tester les cardinalités conjointDécédés
Personne
*
✤ tester la terminologie
* conjointVeuf
✤ identi er les contraintes manquantes
conjointDécédés conjointVeuf
victor conjointVeuf myriam
conjointVeuf conjointDécédés pierre
jean conjointDécédés
farah
fi
Tester le modèle est indispensable
✤ tester les cardinalités conjointDécédés
Personne
*
✤ tester la terminologie
* conjointVeuf
✤ identi er les contraintes manquantes
conjointDécédés conjointVeuf
victor conjointVeuf myriam
conjointVeuf conjointDécédés pierre
jean conjointDécédés
farah
sarah conjointVeuf
fi
Tester le modèle est indispensable
✤ tester les cardinalités conjointDécédés
Personne
*
✤ tester la terminologie
0..1 conjointVeuf
✤ identi er les contraintes manquantes
conjointDécédés conjointVeuf
victor conjointVeuf myriam
conjointVeuf conjointDécédés pierre
jean conjointDécédés
farah
sarah conjointVeuf
fi
Tester le modèle est indispensable
✤ tester les cardinalités conjointDécédés
Personne
*
✤ tester la terminologie
0..1 conjointVeuf
✤ identi er les contraintes manquantes
conjointDécédés conjointVeuf
victor conjointVeuf myriam
conjointVeuf conjointDécédés pierre
jean conjointDécédés
farah
fi
Tester le modèle est indispensable
✤ tester les cardinalités conjointDécédés
Personne
*
✤ tester la terminologie
0..1 conjointVeuf
✤ identi er les contraintes manquantes
conjointDécédés conjointVeuf
victor conjointVeuf myriam
conjointVeuf conjointDécédés pierre
jean conjointDécédés
farah
fi
Tester le modèle est indispensable
✤ tester les cardinalités conjointDécédés
Personne
*
✤ tester la terminologie
0..1 conjointVeuf
✤ identi er les contraintes manquantes
conjointDécédés conjointVeuf
victor conjointVeuf myriam
conjointVeuf conjointDécédés pierre
jean conjointDécédés
farah
fi
Contraintes entre des associations
titulaires
Client Compte Attention aux
1..4 *
1 contraintes évidentes qui
signataire 1
peuvent mener à des mauvais
CarteBleue modèles
* *
titulaires
sarah:Client c1:Compte
signataire
cb1:CarteBleue
titulaires
anïssa:Client titulaires c2:Compte
titulaires
ana:Client c3:Compte
signataire
cb2:CarteBleue
Plan
✤ Notions de base
✤ Conformité
diagramme de classes - système modélisé,
diagramme d’instances - diagramme de classes
✤ Concepts avancés
✤ Usage des diagrammes de classes
Concepts avancés
A utiliser en
fonction de l’étape de
développement, la nature du projet,
✤ visibilité les outils de modélisation, ...
✤ énumération
✤ association - notions avancées
(composition, agrégation, classe associative association quali ée)
fi
Visibilité
✤ Une technique permettant de restreindre l’accès à certains éléments
du modèle
+ public visible
# protégé visible dans la classe et les sous-classes
- privé visible uniquement dans la classe
∼ package visible uniquement dans le package
✤ Utile en conception détaillée et implémentation (pas avant!)
✤ N’a pas de sens dans un modèle conceptuel
✤ Sa sémantique peut dépendre du langage de programmation nal
fi
Enumération
<<enumeration>> ✤ pas d’ordre entre les valeurs
Volume
Fort
Moyen Utilisation:
Faible
<<énumération>> ChaineHiFi
PointCardinal
volHPGauche: Volume
Nord
volHPDroit: Volume
Sud
Est
Ouest
Associations - notions avancées
✤ Navigation
✤ Composition, agrégation
✤ Contraintes prédé nies
✤ Classe associative
✤ Association quali ée
fi
fi
Navigation
✤ Association unidirectionnelle
✤ Signi e qu’on peut naviguer dans un seul sens
✤ Rajoute une contrainte
✤ En cas de doute ne pas mettre de navigation
équivalentes
✤ Utile en conception et implémentation
(pas à l’analyse, pas dans un diagramme de classe métier)
saVoiture
*
Voiture Personne
*
propriétaires
fi
Composition
✤ Notion intuitive de “composant” et “composites”
1 1
4
Pneu
Voiture Roue
1 1 1 Jante
Composition - contraintes
Contraintes liées à la composition
[Link] objet composant ne peut être que dans un seul objet composite
2. Un objet composant n’existe pas sans son objet composite
3. Si l’objet composite est détruit, ses composants le sont aussi
Peut dépendre de la
1 1
4
Pneu situation modélisée
Voiture Roue (vente voitures vs. casse)
1 1 1 Jante
Composition - exemple
Contraintes liées à la composition
1. Un objet composant ne peut être que dans un seul objet composite
2. Un objet composant n’existe pas sans son objet composite
3. Si l’objet composite est détruit, ses composants le sont aussi
1 1..*
1 1..* Section
Document Chapitre *
Figure
*
0..1
Composition - exemple
1 1..*
1 1..* Section
Document Chapitre *
Figure
*
0..1
:Section
:Chapitre :Section
:Document :Figure
:Chapitre Les composants
:Section forment un arbre
:Figure
Composition - exemple
1
Polygone 3..* Point Cercle
x
rayon
y
Composition - exemple
1
Polygone 3..* Point Cercle
x
rayon
y
:Polygone :Cercle
:Point :Point :Point
:Point :Point
Composition - exemple
1
Polygone 3..* Point Cercle
x
rayon
y
:Polygone :Cercle
:Point :Point :Point :Point
:Point :Point
Composition -
notations alternatives
1 4 Roue
Voiture r Voiture
1 1 Moteur 4
m
Roue
1
Moteur
Voiture
r : Roue [4]
m : Moteur
Agrégation
✤ cas particulier d’association + contrainte décrivant l’appartenance
✤ pas de sémantique claire
✤ utiliser avec précaution (pas l’utiliser)
3..* 1
Polygone Point Cercle
x
rayon
y
Agrégation - exemple
3..* 1
Polygone Point Cercle
x
rayon
y
:Polygone :Cercle
:Point :Point :Point
:Point :Point
Contraintes prédéfinies
associations
*
Compte OpérationsBancaires
{ordered, addOnly}
Par exemple :
✤ { frozen } : xé lors de la création de l ’objet, ne peut pas changer
✤ { ordered } : les éléments de la collection sont ordonnés (pas triés!)
✤ { nonUnique } : répétitions possibles (UML2.0)
✤ { addOnly } : impossible de supprimer un élément
fi
Classes associatives
✤ Permettent d’associer des attributs et des méthodes aux
associations
Le nom de la
employé employeur
Personne Société classe est le nom de
* 0..2 l’association
Emploi
Les attribues et les
salaire
opérations sont spéci ques à
taxes() l’association et non pas aux
classes
fi
Classes associatives - exemple
employé employeur
Personne Société
* 0..2 Les attribues et les
opérations sont spéci ques à
Emploi
l’association et non pas aux
salaire e1:Emploi
taxes() classes
salaire=1200
sarah:Personne cnes:Société
e2:Emploi
salaire=1300
pierre:Personne
cea:Société
e3:Emploi
salaire=1400
fi
Classes associatives
✤ Un couple d’objets ne peut être connecté que par un seul lien
correspondant à une même association
Emploi▶
sarah:Personne cnes:Société
Emploi▶
✤ Contrainte valide dans le cas des classes associatives
e1:Emploi
salaire=1200
sarah:Personne cnes:Société
e2:Emploi
salaire=1300
Classes associatives
✤ Si la modélisation doit permettre à une personne d’avoir deux
emplois pour la même Société, il ne faut pas utiliser une classe
associative
Personne Société
1 1
employé employeur
Emploi
salaire
0..2
taxes() *
Classes associatives
✤ Peuvent être utilisées comme des classes, i.e. participer à des
associations
employeur
Personne Société
* 0..2
Emploi
*
FicheDePaye salaire
{ordered}
taxes()
Associations qualifiées
✤ Un quali er est un (ensemble de) attribut(s) dont la valeur sert à
ltrer l’ensemble des instances associées via une association
Répertoire nom Fichier
0..1
Banque noCompte Compte
0..1
fi
fi
Vue générale sur les associations
Nom association Nom de rôle
Direction de
lecture
Nom de rôle Navigation
roleA Assoc ▶ roleB
ClasseA q:string ClasseB
{ordered} *
Quali cateur Assoc Multiplicité
attr
Composition
oper()
Contrainte
Classe associative
fi
Plan
✤ Notions de base
✤ Conformité
diagramme de classes - système modélisé,
diagramme d’instances - diagramme de classes
✤ Concepts avancés
✤ Usage des diagrammes de classes
Usage des diagrammes de classes
Syntaxe identique
✤ En modélisation métier
Diagramme de classes du domaine
✤ En conception objet préliminaire
Diagramme de classes participantes - pour chaque réalisation des
cas d’utilisation
Niveau de détail
✤ En conception objet détaillée différent
Diagramme de classes de la conception
Modélisation métier
Buts:
✤ Comprendre la structure statique et dynamique d’une organisation
✤ S’assurer que les clients, utilisateurs et développeurs ont la même
compréhension de l’organisation
✤ Déduire des besoins système pour supporter l’organisation
Une démarche
(classes métier)
+ diags activité
(processus métier)
Adapté de
"UML : modéliser un site e-commerce",
Pascal ROQUES, Eyrolles, 2002
Transparents élaborés à partir des supports réalisés par
Jean-Marie Favre, Université Joseph Fourier, Grenoble
Henri Massié, Université Paul Sabatier, Toulouse
Joannis Parissis, Université Joseph Fourier, Grenoble