Vous êtes sur la page 1sur 10

UML : Diagrammes de Classes

Objet, Classe, Attribut, Mthode Lien, Association, Cardinalit Gnralisation, Composition, Aggrgation, Classe associative, Association qualifie

Concepts de base
UML est bas sur diffrents concepts de base :
Objet, Classe Lien, Association Contrainte

UML propose des notations et des diagrammes


Diagramme de classes (description au niveau modlisation, cas gnral) Diagramme dobjets (description au niveau instance, exemples)

Jean -Marie.Favre@imag .fr

jmfavre@imag.f r

Diagrammes de Classes

Notation pour les classes


Compte numro : entier solde : rel dcouvertMax : entier consulterSolde() : entier crditer( somme : entier) dbiter( somme : entier)

Notations simplifies pour les classes


Compte numro solde ... Compte Compte Compte numro solde ... crditer() dbiter() ... numro solde : rel dcouvertMax : entier consulterSolde() : entier crditer( somme : entier) dbiter( somme ) Compte

Nom de la classe Attributs


nom type

Mthodes
nom paramtre type du rsultat

crditer() dbiter() ...

Conventions :
{ solde > dcouvertMax }
jmfavre@imag.f r

Contraintes
Diagrammes de Classes 3

les noms de classes commencent par une majuscule les noms d attributs et de mthodes commencent par une minuscule
jmfavre@imag.f r

Diagrammes de Classes

Notations pour les objets

Liens (entre objets)


Un lien indique une connexion entre deux objets

leCompteDePaul

APourCompte>

leCompteDePaul : Compte numro = 6688 solde = 5000 dcouvertMax = -100

paul : Client

c1 : Compte

: Compte

APourCompte>

pierre : Client
APou rCom pte >

c2 : Compte

leCompteDePaul : Compte marie : Client

c3 : Compte

Convention :
les noms d objets commencent par une minuscule et sont souligns
jmfavre@imag.f r

Conventions :
Diagrammes de Classes 5
jmfavre@imag.f r

les noms des liens sont des formes verbales et commencent par une majuscule > indique le sens de la lecture (ex: paul APourCompte c1 )
Diagrammes de Classes

Rles
Chacun des deux objets joue un rle diffrent dans le lien
APourCompte>

Associations (entre classes)


Une association dcrit un ensemble de liens de mme smantique
APourCompte>

pierre : Client

titulaire

compte

c1 : Compte

Client

Compte

Diagramme de classes (modlisation)

pierre assume le rle de titulaire pour le compte c1 c1 assume le rle de compte pour pierre Conventions :
choisir un groupe nominal pour dsigner un rle si un nom de rle est omis, le nom de la classe fait office de nom
jmfavre@imag.f r

APourCompte>

paul : Client

c1 : Compte

APourCompte>

pierre : Client
AP ou rC om pte >

c2 : Compte

marie : Client

c3 : Compte

Diagramme d objets (instances)


Diagrammes de Classes 8

Diagrammes de Classes

jmfavre@imag.f r

Liens vs. Associations


Un lien lie deux objets Une association lie deux classes Un lien est une instance dassociation Une association dcrit un ensemble de liens Des liens peuvent tre ajouts ou crs pendant lexcution, (ce n est pas le cas des associations)

Cardinalits dune association


Prcise combien dobjets peuvent tre lis un seul objet source Cardinalit minimale et cardinalit maximale ( C min..C max)
1 APourCompte> 0..* comptes

Client

titulaire

Compte

Un client a 0 ou plusieurs comptes Un compte a toujours 1 et 1 seul titulaire

APourCompte >

paul : Client

c1 : Compte

APourCompte >

pierre : Client
APourC ompte >

c2 : Compte

marie : Client

c3 : Compte

jmfavre@imag.f r

Diagrammes de Classes

jmfavre@imag.f r

Diagrammes de Classes 10

Utiliser les rles pour naviguer

Contraintes entre associations


Les cardinalits ne permettent pas dexprimer toutes les contraintes...

APourCompte>

0..* comptes

Client

titulaire

Compte
Client

titulairePrincipal

0..* 0..* 0..*

Compte numro solde ...

0..* co-titulaires 1..* titulaires

paul.comptes = {c1} pierre.comptes = {c2,c3} marie.comptes = {} c1.titulaire = paul c2.titulaire = pierre c3.titulaire = pierre
jmfavre@imag.f r

APourCompte>

paul : Client

c1 : Compte

APourCompte>

pierre : Client
AP ou rC om pte >

c2 : Compte

marie : Client

c3 : Compte

dcrire les contraintes en langue naturelle (ou en OCL le langage de contrainte dUML)
jmfavre@imag.f r

(1) Un client ne peut pas tre la fois titulaire principal et co-titulaire d un mme compte. (2) Les titulaires d un compte sont le titulaire principal et les co-titulaires le cas chant
Diagrammes de Classes 12

Diagrammes de Classes 11

Diagramme de classes
Client 1..4
titulaires

Diagrammes dobjets
EstAcceptPar>

0..*

Compte numro solde ... 1

1..*

Banque numro nom

1..*
: CarteBleue
signataire titulaires

: Distributeur

1 signataire

0..* Consortium

fred : Client

c4 : Compte

: Banque

: Consortium

0..*
virementPossible

: CarteBleue
signataire

0..*

CarteBleue Code retraitMax

0..1

1 0..*

paul : Client
titulaires

c1 : Compte

: Banque

EstAcceptPar>

Distributeur

titulaires

1..*
(1) Le signataire de la carte bleue associe un compte est l un des titulaires de ce compte. (2) Une carte bleue est accepte au moins dans tous les distributeurs appartenant aux consortiums de la banque correspondant au compte associ la carte bleue. (3) Un virement est possible entre deux comptes distincts si les banques correspondantes appartiennent un mme consortium. jmfavre@imag.f r Diagrammes de Classes 13

pierre : Client
tit ula ire s

c2 : Compte

: Consortium

titulaires

marie : Client
signataire

c3 : Compte : CarteBleue
EstAcceptPar>

: Banque

sophie : Client
EstAcceptPar>

: Distributeur

jmfavre@imag.f r

Diagrammes de Classes 14

Diagrammes de classes vs. dobjets


Un diagramme de classes
dfini lensemble de tous les tats possibles les contraintes doivent toujours tre vrifies

Diagrammes de classes vs. dobjets


Compte Client 1..4
titulaires

0..* numro solde ... 1 0..*

1..*

Banque numro nom

1..*

signataire

0..* Consortium

CarteBleue

Un diagramme dobjets
dcrit un tat possible un instant t, un cas particulier doit tre conforme au modle de classes

0..* Code retraitMax

0..1

virementPossible

1 0..*

EstAcceptPar >

Distributeur 1..*

Les diagrammes dobjets peuvent tre utiliss pour


expliquer un diagramme de classe (donner un exemple) valider un diagramme de classe (le "tester")
> : : C i l ent t i t u t l i a t i u r l e a s i r e s : : : Co mp t :e Co mp : Co te > mp > te : B a n q :u Be a : n Dis q trib u ue e t ur : : Co ns orti um : Co : ns Bo r t i aum : n Dis q trib u ue e t ur : C i l ent t i t u t l i a t i u r l e a s i r e s : : : : : Co mp t :e Co mp : Co te > mp > te : B a n q :u Be a n: Dis q trib u u ete ur : : Co ns orti um : Co ns orti um : C i l ent t i t u tl ia ti ur le as i r e s > : : : : : Co mp t :e Co mp : Co te mp > >t e : B a n q : u B e a : n Dis q trib u ue e t ur : : Co ns orti um : Co ns orti um > :

: C i l ent : C i l ent : C i l ent

s : i g n a t a i r e

t i t t i u l t u a l i r a i e r s e s

...

: C i l ent : C i l ent : C i l ent

: C i l ent : C i l ent : C i l ent

jmfavre@imag.f r

Diagrammes de Classes 15

jmfavre@imag.f r

t1

t2

3 Diagrammes de Classes 16

Gnralisation / Spcialisation
Une classe peut tre la gnralisation dune ou plusieurs autres classes. Ces classes sont alors des spcialisations de cette classe.
Personne

Hritage
Les sous-classes hritent des proprits des super-classes (attributs, mthodes, associations, contraintes)
Compte solde crditer() dbiter() * Banque CompteEpargne {solde > -5000} solde tauxIntrt crditer() dbiter() calculIntrts () {solde > -5000 et tauxIntrt < 100}
Diagrammes de Classes 18

"Super classe"

Compte

Banque

Homme

Femme

"Sous classes"

Compte Epargne

CompteEpargne tauxIntrt ajouterIntrts () {tauxIntrt < 100}

jmfavre@imag.f r

Diagrammes de Classes 17

jmfavre@imag.f r

Vision ensembliste
Vision ensembliste : tout objet dune sous-classe appartient galement la super-classe => inclusion des ensembles dobjets
Compte
c3 c2 ce2 ce1 c2 c1
o1

Synthse des concepts de base


Classe
attribut mthode

Association
rle cardinalit

Gnralisation

o1

o3 o4 o2

o1

o2 o2 o5

o3

Compte Epargne

ce3

Compte

CompteEpargne

Objets
Diagrammes de Classes 19
jmfavre@imag.f r

Liens

Inclusion ensembliste
Diagrammes de Classes 20

jmfavre@imag.f r

Exemple
subordonns * 1..* employs 0..1 parents mre 0..1 0..2
paul

Exemple

poux pre

pouse mre

mari e

Personne
directeur 0..1

Socit

pre 0..1

parents

Personne
sexe enfants * 0..1

pouse 0..1
enfants

joe

enfants parents

(1) Le directeur de tout employ est employ dans la mme socit. (2) Dans toute socit il y a au moins une personne qui n est dirige par personne (le directeur de la socit). (3) Une personne ne peut pas tre directeur d elle mme ...
jmfavre@imag.f r

poux

Diagrammes de Classes 21

jmfavre@imag.f r

Diagrammes de Classes 22

Diagrammes de classes: concepts additionels


Concepts utiliser bon escient, lorsque ncessaire et uniquement lorsque ncessaire...

Rappels
UML est un ensemble de notations De nombreuses utilisations possibles Notation simple vs. complexe Notation plus ou moins formelle Notation extensible

jmfavre@imag.f r

Diagrammes de Classes 24

Savoir s'adapter
S'adapter au niveau d'abstraction au domaine d'application ses collgues aux outils utiliss
pour crire des diagrammes UML, pour gnrer du code, des schmas de bases de donnes, etc. ...

+ # - Visibilit des lments


Restreindre l'accs aux lments d'un modle Contrler et viter les dpendances entre paquetages

+ # -

public protg priv

visible visible dans la classe et ses sous-classes visible dans la classe uniquement

Savoir lire vs. savoir crire Ingnierie vs. Retro-ingnierie


jmfavre@imag.f r

N'a pas de sens dans un modle abstrait Utile lors de la conception. N'utiliser que lorsque ncessaire.
jmfavre@imag.f r

Diagrammes de Classes 25

Diagrammes de Classes 26

Dclaration d'attributs
[ visibilit ] nom [card] [ : type ] [ = valeur-initiale ] [ { props... } ] exemples: age - age : Integer = 0 # age [0..1] : Integer # numsecu : Integer {frozen} # motsCls [*] : String {addOnly} Adapter le niveau de dtail au niveau d'abstraction
jmfavre@imag.f r

Dclaration d'oprations
[ visibilit ] nom [ ( params ) ] [ : type ] [ { props... } ] params := [ in | out| inout ] nom [ : type] [ =defaut ] [{ props... } ] exemples: getAge() + getAge() : Integer - updateAge( in date : Date ) : Boolean + getAge() : Integer {isQuery} Adapter le niveau de dtail au niveau d'abstraction
jmfavre@imag.f r

Diagrammes de Classes 27

Diagrammes de Classes 28

Navigation
Association unidirectionnelle On ne peut naviguer que dans un sens

Composition
Notion intuitive de "composants" et de "composites"

Voiture
titulaire

Pneu Jante

Roue

Client

Compte

Ce dtail nest a priori utile que lors de la conception En cas de doute ne pas mettre de flche !!! ,
jmfavre@imag.f r

composition = cas particulier dassociation + contraintes dcrivant la notion de "composant"...


jmfavre@imag.f r

Diagrammes de Classes 29

Diagrammes de Classes 30

Composition
Contraintes lies la composition : 1. Un objet composant ne peut tre que dans un seul objet composite 2. Un objet composant nexiste pas sans son objet composite 3. Si un objet composite est dtruit, ses composants aussi
1

Composition
Contraintes: 1. Un objet composant ne peut tre que dans un seul objet composite 2. Un objet composant nexiste pas sans son objet composite 3. Si un objet composite est dtruit, ses composants aussi
1..* 1..*

Voiture

Pneu Jante

Roue

Document

Chapitre
0..*

Section Figure

0..1
jmfavre@imag.f r

Diagrammes de Classes 31

jmfavre@imag.f r

Diagrammes de Classes 32

Composition
1 1..* 1..*

Composition

Document

Chapitre
0..* 1..*
: section

Section
Polygone 3..* x y Point 1 Cercle rayon

Figure

: chapitre : section : figure : document : chapitre : section

Les composants forment un arbre

jmfavre@imag.f r

: figure Diagrammes de Classes 33

jmfavre@imag.f r

Diagrammes de Classes 34

Autres notations pour la Composition


1 4

Associations intra vs. inter composites


1

Volant Roue Voiture Voiture Volant


1

Volant Roue
* 1

0..1

Voiture

4 *

*
siges

Sige

Voiture
0..1

Constructeur

Volant

Voiture volant : Volant roue [4] : Roue siges [*] : Sige


jmfavre@imag.f r

Roue 4 Constructeur siges : Sige


Diagrammes de Classes 35
jmfavre@imag.f r

* 1 *

Roue 4

Diagrammes de Classes 36

Exemple
Polygone
succ 1

Aggregation
aggregation = cas particulier dassociation + contraintes dcrivant la notion d'appartenance... ?
* Point x y

initial 1 pointsLis *

3..*

Figure

Point
deplacer() supprimer()

*
deplacer() supprimer()

Partage possible Pas de concensus sur la signification exacte de l'aggrgation Utiliser avec prcautions (ou ne pas utiliser...)
jmfavre@imag.f r

jmfavre@imag.f r

Diagrammes de Classes 37

Diagrammes de Classes 38

Classes associatives
employ

Classes associatives
socit 0..2

Pour associer des attributs et/ou des mthodes aux associations => classes associatives
employ socit 0..2

Personne

Socit

Emploi
salaire augmenter()
e1 salaire = 10000

Personne

Socit

Emploi
salaire
employ

s1

e2 salaire = 2000
employ

augmenter()
pierre

s1 e3

Le salaire est une information correspondant ni une personne, ni une socit, mais un emploi (un couple personne -socit).
Diagrammes de Classes 40

Le nom de la classe correspond au nom de lassociation


jmfavre@imag.f r

salaire = 16000 marie


employ

Diagrammes de Classes 39

jmfavre@imag.f r

Classes associatives
employ

Classes associatives
socit 0..2

Pour une association donne, deux objets ne peuvent tre connects que par un seul lien correspondant cette association.
Emploi>

Personne

Socit
e1 p1 s1

Emploi
salaire

p1

Emploi>

s1 Ci-dessus, une personne peut avoir deux emplois, mais pas dans la m me socit
e1 p1 e2 s1

Cette contrainte reste vraie dans le cas o lassociation est dcrite partir d une classe associative.
: Emploi salaire = 10000

employ

0..2

p1
: Emploi salaire = 2000 jmfavre@imag.f r

s1

Personne
1

Emploi
salaire

socit

Socit
1

Ci-dessus, une personne peut avoir deux emplois dans la mme socit
Diagrammes de Classes 41
jmfavre@imag.f r

Diagrammes de Classes 42

Classes associatives

Classes associatives
Les classes associatives sont des associations mais aussi des classes. Elles ont donc les mmes proprits et peuvent par exemple tre lies par des associations.
employ socit

Virement
montant

Ou ?
*

Virement
montant * * 1 compteCrdit

Personne

compteDbit

compteDbit 1

Socit

Emploi compte
salaire augmenter()
subordonns responsable

compte

0..1

compteCrdit

jmfavre@imag.f r

Diagrammes de Classes 43

jmfavre@imag.f r

Diagrammes de Classes 44

Contraintes sur les associations


Contraintes prdfinies sur les associations. Par exemple : { frozen } : fix lors de la cration de l objet, ne peut pas changer { ordered } : les lments de la collection sont ordonns { addOnly } : impossible de supprimer un lment Nom de rle

Synthse sur les associations


sens de lecture Nom dassociation Cardinalits

ClasseA

roleA {frozen}

<AssociationX

0..*

ClasseB AssociationX

RelevDe Compte

lignes * {ordered,addOnly}

Ligne Opration

Composition (ou aggregation

attributZ

) Classe associative

Navigation

Contrainte Il est possible de dfinir de nouvelles contraintes


jmfavre@imag.f r

Diagrammes de Classes 45

jmfavre@imag.f r

Diagrammes de Classes 46

Exemple
Graphe

Associations qualifies
Un qualifieur est un attribut ou un ensemble d'attributs dont la valeur sert dterminer l'ensemble des instances associes une instance via une association.

*
{frozen}

Polygone

1 *

Noeud
preds

* succs

Arc Repertoire
2..* {ordered}
nom

0..1

Fichier

{ordered,frozen}

Points
0..1 *

Poignes

Les attributs du qualifieur sont des attributs de l'association.


jmfavre@imag.f r

Diagrammes de Classes 47

jmfavre@imag.f r

Diagrammes de Classes 48

Associations vs. Associations qualifies


Banque
ncpt

Cardinalit des Associations Qualifies


Banque
nc

0..1

Personne

0..1

Compte

Banque
* Client
ncpt

clients *

Personne
ncpt nl : NumLigne nc : NumCol 1

Echiquier Personne
*

Case
1

Banque
*

Banque
*
jmfavre@imag.f r

Client *
ncpt

Personne
* *
Diagrammes de Classes 49
jmfavre@imag.f r

Banque

titre

Employe

Diagrammes de Classes 50

Exemple
*
membres

Hritage et redfinition
Une sous classe peut redfinir une proprit, condition toutefois de rester compatible avec la dfinition originale
Figure surface() dplacer()

Association1901

titre:Titre

Personne
* 1

Titre = enum {President, Tresorier, Secretaire }

membres

fred sylvia ahmed joe Diagrammes de Classes 51

membres

a1

#Tresorier #President #Secretaire

Polygone Cercle surface()


jmfavre@imag.f r

surface() Carre surface()


Diagrammes de Classes 52

jmfavre@imag.f r

Hritage multiple
Une classe peut hriter de plusieurs super-classes
Appareil

Points lis lhritage et la classification


Les modles orients-objets ne font pas tous les mmes hypothses Hritage simple vs. hritage multiple Une classe peut elle hriter de plusieurs classes ? Classification simple vs. classification multiple Un objet peut-il tre simultanment instance de plusieurs classes? Classification statique vs. classification dynamique Un objet peut-il changer de classe pendant lexcution ?

Chauffage

Appareil lectrique

PoelA Mazout

Chauffage lectrique

FourA MicroOndes

Certains langages de programmation interdisent lhritage multiple


jmfavre@imag.f r

Diagrammes de Classes 53

jmfavre@imag.f r

Diagrammes de Classes 54

Points lis lhritage et la classification


Sauf si le contraire est indiqu explicitement, en UML les hypothses par dfaut sont :
parents 0..2 * *

Exemple

enfants

Hritage multiple une classe peut hriter de plusieurs classes Classification simple un objet est instance dune seule classe Classification statique un objet est cr partir dune classe donne et nen change pas

Personne

mre 0..1

0..1 pouse 0..1 poux 0..1

pre

Femme

Homme

jmfavre@imag.f r

Diagrammes de Classes 55

jmfavre@imag.f r

Diagrammes de Classes 56

Exemple
Compte solde crditer() dbiter()
destinataire 1 {montant<0} 1 {addOnly,ordered} *

Opration date montant

Dbit

Crdit

{montant>0}

CompteEpargne tauxIntrt ajouterIntrts ()

Retrait Virement

Retrait Espce

Retrait Guichet
jmfavre@imag.f r

Retrait * Distributeur

Distributeur

Diagrammes de Classes 57

10

Vous aimerez peut-être aussi