Introduction aux modèles de classes d'UML. Uniquement les concepts de bases sont présentés:
- classes et objets
- associations et liens
- héritages
Les autres concepts ne sont pas fondamendaux. Ils sont présentés dans un autre jeu de transparents.
1. megaplanet
UML :UML :
Diagrammes de ClassesDiagrammes de Classes
Concepts de baseConcepts de base
Objets, ClassesObjets, Classes
Lien, Association, CardinalitéLien, Association, Cardinalité
GénéralisationGénéralisation
2. megaplanet
2
Concepts de baseConcepts de base
ClasseClasse
attributattribut
méthodeméthode
AssociationAssociation
rôlerôle
cardinalitécardinalité
o1
o2
o1
o2
o3
o4
o5
o1
o2
o3
ObjetObjet LienLien
M1
M0
GénéralizationGénéralization
héritagehéritage
sous typagesous typage
3. megaplanet
3
Concepts de baseConcepts de base
UML est basé sur différents concepts de base :UML est basé sur différents concepts de base :
Objet, ClasseObjet, Classe
Lien, AssociationLien, Association
HéritageHéritage
ContrainteContrainte
UML propose des notations et des diagrammesUML propose des notations et des diagrammes
Diagramme de classes (description au niveau modèlisation, cas général)Diagramme de classes (description au niveau modèlisation, cas général)
Diagramme d’objets (description au niveau instance, exemples)Diagramme d’objets (description au niveau instance, exemples)
5. megaplanet
5
Compte
Notation pour les classesNotation pour les classes
numero : entier
solde : entier
decouvertMax : entier
consulterLeSolde() : entier
crediter( somme : entier)
debiter( somme : entier)
Nom de la classe
Attributs
nom
type
Opérations
nom
paramètre
type du résultat
Contraintes{ inv: solde > decouvertMax }
6. megaplanet
6
Compte
ParaphrasageParaphrasage
numero : entier
solde : entier
decouvertMax : entier
consulterLeSolde() : entier
crediter( somme : entier)
debiter( somme : entier)
{ inv: solde > découvertMax }
Le concept de compte est pertinent.
Le numéro d'un compte est un entier.
Le solde d'un compte est un entier.
Le découvert max d'un compte est un entier.
Pour un compte donné il est possible de:
- consulter le solde
- créditer avec une somme
- débiter avec une somme.
7. megaplanet
7
Notations alternativesNotations alternatives
Compte
numero : entier
solde : reel
decouvertMax : entier
consulterSolde() : entier
crediter( somme : entier)
debiter( somme )
Compte
numero
solde
...
crediter()
debiter()
...
Compte
numero
solde
...
Compte
crediter()
debiter()
...
Compte
Notes de style :
les noms de classes commencent par une majuscule
les noms d ’attributs et de méthodes commencent par une minuscule
Compte
M1
8. megaplanet
8
Notations pour les objetsNotations pour les objets
leCompteDePaul : Compte
numero = 6688FA89K888
solde = 5000
decouvertMax = -100
leCompteDePaul
: Compte
leCompteDePaul : Compte
Convention :
• les noms d ’objets commencent par une minuscule et sont soulignés
M0
9. megaplanet
9
ParaphrasageParaphrasage
leCompteDePaul : Compte
numero = 6688FA89K888
solde = 5000
découvertMax = -100
leCompteDePaul
: Compte
leCompteDePaul : Compte
Le compte de paul est un objet.
un compte
Le compte de paul est un compte.
Le compte de paul est un compte.
Le numéro du compte de paul est 6688FA89K888.
Le solde du compte de paul est 5000.
Le découvert max du compte de paul est -100.
10. megaplanet
10
Classe vs. ObjetsClasse vs. Objets
Compte
numéro
solde : réel
découvertMax : entier
consulterSolde() : entier
créditer( somme : entier)
débiter( somme )
Une classe spécifie la structure et le
comportement d'un ensemble d'objets
de même nature
Diagramme
de classesLa structure d'une classe est constanteLa structure d'une classe est constante
leCompteDePaul : Compte
numéro = 6688FA89K888
solde = 5000
découvertMax = -100
leCompteDeMarie:Compte
numéro = 2275 UH73826
solde = 10000
découvertMax = -1000
:Compte
numéro = 1200 YE73626
solde = 150
découvertMax = 10
Diagramme
d ’objets
DesDes objetsobjets peuvent êtrepeuvent être
ajoutés ou détruits pendantajoutés ou détruits pendant
l ’exécutionl ’exécution
La valeur des attributs desLa valeur des attributs des
objets peut changerobjets peut changer
M0
M1
12. megaplanet
12
Liens (entre objets)Liens (entre objets)
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte
APourCompte
APourCompte
Un lien indique une connexion entre deux objets
Note de style :
• les noms des liens sont des formes verbales et commencent par une majuscule
• indique le sens de la lecture (ex: « paul APourCompte c1 »)
13. megaplanet
13
ParaphrasageParaphrasage
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte
APourCompte
APourCompte
paul a pour compte c1
pierre a pour compte c2 et c3
marie a pour compte aucun compte
paul, pierre et marie sont des clients c1, c2 et c3 sont des comptes
14. megaplanet
14
Contrainte sur les liensContrainte sur les liens
Au maximum un lienAu maximum un lien d'un type donnéd'un type donné entre deux objets donnésentre deux objets donnés
marie : Personnejoseph : Personne
APourEpouse
jose : Personne
EstEnfantDe
madeleine : Personne
EstEnfantDe
EstGardePar
OK
15. megaplanet
15
Contrainte sur les liensContrainte sur les liens
Au maximum un lienAu maximum un lien d'un type donnéd'un type donné entre deux objets donnés*entre deux objets donnés*
marie : Personnejoseph : Personne
APourEpouse
APourEpouse
(*) Contrainte importante pour compendre les « classes associatives »
Contrainte pouvant être relachée via {nonunique} en UML 2.0
voir plus loin les concepts avancés
joseph a pour epouse marie
joseph a pour epouse marie
16. megaplanet
16
RôlesRôles
c1 : Comptepierre : Client
APourCompte
titulaire compte
Chacun des deux objets joue un rôle diffèrent dans le lien
Note de style :
choisir un groupe nominal pour désigner un rôle
si un nom de rôle est omis, le nom de la classe fait office de nom
(1) pierre a pour compte c1
(2) c1 joue le role de compte pour pierre
(3) pierre joue le role de titulaire pour c1
(2.b) le [un des] compte[s] de pierre est c1
(3.b) le [un des] titulaire[s] de c1 est pierre
18. megaplanet
18
Associations (entre classes)Associations (entre classes)
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte>
APourCompte>
APourCompte>
Client Compte
APourCompte
Une association décrit un ensemble de liens de même "sémantique"
comptestitulaire
Diagramme
d ’objets
(exemplaires)
Diagramme
de classes
(modèlisation)
M0
M1
20. megaplanet
20
Association vs. LiensAssociation vs. Liens
UnUn lienlien lie deuxlie deux objetsobjets
UneUne associationassociation lie deuxlie deux classesclasses
UnUn lienlien est une instance d’est une instance d’associationassociation
UneUne associationassociation décrit un ensemble dedécrit un ensemble de liensliens
DesDes liensliens peuvent être ajoutés ou détruits pendant l ’exécution,peuvent être ajoutés ou détruits pendant l ’exécution,
(ce n ’est pas le cas des associations)(ce n ’est pas le cas des associations)
Le terme "relation" ne pasLe terme "relation" ne pas partie du vocabulaire UMLdu vocabulaire UML
c1: Compte
c2: Compte
paul : Client
pierre :Client
marie : Client c3: Compte
A PourCompte>
A PourCompte>
APourCo
mpte>
Client Compte
APourCompte>
liens
association
classe
objets
M1
M0
21. megaplanet
21
Nommer les associationsNommer les associations
Compte Banque
Compte Banque
EstGéréPar
banqueGérantecomptesGéré
s
Compte Banque
comptesGérés
Compte Banque
banqueGérante
Compte Banque
Gère
Différentes façons de
nommer une association
mais une seule idée
cohérence obligatoire!
22. megaplanet
23
Utiliser les rôles pour «naviguer»Utiliser les rôles pour «naviguer»
Client Compte
APourCompte
titulaire comptes
= {c1}
= {c2,c3}
= { }
= paul
= pierre
= pierre
Nommer en priorité les rôles
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte>
APourCompte>
APourCompte>
titulaire
titulaire
comptes
comptes
comptes
titulaire
paul.comptes
pierre.comptes
marie.comptes
c1.titulaire
c2.titulaire
c3.titulaire
M0
M1
23. megaplanet
24
Utiliser les rôles pour «naviguer»Utiliser les rôles pour «naviguer»
Client Compte
APourCompte
titulaire comptes
= {c1}
= {c2,c3}
= { }
= paul
= pierre
= pierre
Nommer en priorité les rôles
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte>
APourCompte>
APourCompte>
titulaire
titulaire
comptes
comptes
comptes
titulaire
paul.comptes
pierre.comptes
marie.comptes
c1.titulaire
c2.titulaire
c3.titulaire
M0
M1
24. megaplanet
25
CardinalitésCardinalités
Nombre d’objets pouvant être liés à un objet source (min..max)Nombre d’objets pouvant être liés à un objet source (min..max)
Client Compte
1..1 APourCompte 0..*
titulaire comptes
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte>
APourCompte>
APourCompte>
M0
M1
26. megaplanet
27
ParaphrasageParaphrasage
Client Compte
1..1
0..*
titulaire
comptes
(1a) Un client quelconque peut ne pas avoir de compte.
(1b) Un client quelconque peut avoir plusieurs comptes.
(1c) Tous les comptes d'un client sont des comptes.
(1a) (1b)
(1c)
(2a)(1b)
(2a) Un compte quelconque à toujours un et un seul titulaire.
(2b) L'unique titulaire d'un compte est un client
(1a) Un client quelconque peut ne pas avoir de compte.
(1b) Un client quelconque peut avoir plusieurs comptes.
(1c) Tous les comptes d'un client sont des comptes.
27. megaplanet
28
CardinalitésCardinalités TerminologieTerminologie
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
EstTitulairePrincipalDe>
EstTitulairePrincipalDe>
EstTitutlairePrincipalDe>
M0
M1
Terminologie et cardinalités sont intimement liéesTerminologie et cardinalités sont intimement liées
28. megaplanet
29
Associations "reflexives"Associations "reflexives"
parents
enfants
EstParentDe
Personne
2
*
Une association peut relierUne association peut relier
des "objets" d'une même classedes "objets" d'une même classe
N'implique pas forcémentN'implique pas forcément
des liens "reflexifs"des liens "reflexifs"
parents
paul marie
jean noelle
fred
parentsparents parents
myria
parentsparents
sylvia
parents
parents
attention: ce diagramme d'objets n'est pas conforme au diagramme de classe
M0
M1
29. megaplanet
30
ConformitéConformité
Diagrammes d'instances / Diagrammes de classesDiagrammes d'instances / Diagrammes de classes
parents
enfants
EstParentDe
Personne
2
*
parents
paul marie
jean noelle
fred
parentsparents parents
myria
parentsparents
sylvia
parents
parents
0..0..
ATTENTION:
ce diagramme d'objet
n'est pas conforme
au diagramme de classes
M0
M1
30. megaplanet
31
parents
enfants
EstParentDe
Personne
2
*
parents
paul marie
jean noelle
fred
parentsparents parents
myria
parentsparents
sylvia
parents
parents
0..0..
ATTENTION:
ce diagramme d'objet
est conforme
au diagramme de classes
ConformitéConformité
Diagrammes de classes / Système modéliséDiagrammes de classes / Système modélisé
mais n'est pas correct
à la réalité (pas
réaliste)
ATTENTION:
ce diagramme de classes
n'est pas un bon modèle
du système modélisé
M0
M1
32. megaplanet
33
Diagrammes de classes vs. d’objetsDiagrammes de classes vs. d’objets
Un diagramme de classesUn diagramme de classes
défini l’ensemble de tous les états possiblesdéfini l’ensemble de tous les états possibles
les contraintes doivent toujours être vérifiéesles contraintes doivent toujours être vérifiées
Un diagramme d’objetsUn diagramme d’objets
décrit un état possible à un instant t, un cas particulierdécrit un état possible à un instant t, un cas particulier
doit être conforme au modèle de classesdoit être conforme au modèle de classes
Les diagrammes d’objets peuvent être utilisés pourLes diagrammes d’objets peuvent être utilisés pour
expliquer un diagramme de classe (donner un exemple)expliquer un diagramme de classe (donner un exemple)
valider un diagramme de classe (le "tester")valider un diagramme de classe (le "tester")
Client
1..4 0.
.*
titulaires
Consortium
Compte
numéro
solde
...
*
1
0
.
.
*
1
0.
.*
1.
.*
signataire1
0.
.*
CarteBleue
Code
retraitM ax
Distributeur
1
.
.
*
EstAcceptéPar>
1
..
*
Banque
numéro
nom
c1:
Compt
e
c2:
Comp
te
paul :
Client
pierre
:
Client
marie
:
Client
c3:
Compt
e
t
i
t
u
l
a
i
r
e
s
t
i
t
u
l
a
i
r
e
s
:
Carte
Bleue
t
i
t
u
l
a
i
r
e
s
t
i
t
u
l
a
i
r
e
s
s
i
g
n
a
t
a
i
r
e
:
Carte
Bleue
sophi
e :
Client
:
B
a
n
q
u
e
:
B
a
n
q
u
e
s
i
g
n
a
t
a
i
r
e
:
Cons
ortium
:
Distrib
uteur
EstAc
cepté
Par>
EstAc
cepté
Par>
c1:
Compt
e
c2:
Comp
te
paul :
Client
pierre
:
Client
marie
:
Client
c3:
Compt
e
t
i
t
u
l
a
i
r
e
s
t
i
t
u
l
a
i
r
e
s
:
Carte
Bleue
t
i
t
u
l
a
i
r
e
s
t
i
t
u
l
a
i
r
e
s
s
i
g
n
a
t
a
i
r
e
:
Carte
Bleue
sophi
e :
Client
:
B
a
n
q
u
e
:
B
a
n
q
u
e
s
i
g
n
a
t
a
i
r
e
:
Cons
ortium
:
Distrib
uteur
EstA c
cepté
Par>
EstAc
cepté
Par>
34. megaplanet
35
GénéralisationGénéralisation SpécialisationSpécialisation
Une classe peut être la généralisation d’une ou plusieurs autres classes.
Ces classes sont alors des spécialisations de cette classe.
"Super classe"
"Sous classes"
Personne
FemmeHomme
Compte
Compte
Epargne
Cas général
Cas spécifique
Deux points de vue liés (en UML) :
• héritage
• sous-typage
36. megaplanet
37
Héritage et redéfinitionsHéritage et redéfinitions
Compte
solde
créditer(
)
débiter()
CompteEpargne
créditer()
débiter()
ajouterIntérêts ()
PEL
créditer()
débiter()
ajouterIntérêts ()
PEC
débiter()
PET
débiter()
Une opération peut être
"redéfinie" dans les sous-classes
Permet d'associer des méthodes
spécifiques à chaque sous classe
pour réaliser une même opération
37. megaplanet
3
Sous TypageSous Typage
Tout objet d’une sous-classe
appartient également à la
super-classe
Compte
Epargne
ce1
Compte
Compte CompteEpargne
ce2
ce3
c3
c4
c18
c1
c2
M1
M0
Un compte epargne est un compte.
38. megaplanet
39
Synthèse des concepts de baseSynthèse des concepts de base
ClasseClasse
attributattribut
méthodeméthode
AssociationAssociation
rôlerôle
cardinalitécardinalité
o1
o2
o1
o2
o3
o4
o5
o1
o2
o3
ObjetObjet LienLien
M1
M0
GénéralizationGénéralization
héritagehéritage
sous typagesous typage