Vous êtes sur la page 1sur 57

UML Diagrammes de Classes

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

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 daprs Jean-Marie Favre

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)

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

Notation pour les classes


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

Nom de la classe Attributs Mthodes


nom paramtre type du rsultat nom type

Gre les informations et oprations dun compte bancaire

Prcisions
Responsabilit Exceptions

{ solde > dcouvertMax }

Contraintes
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 3

Notations simplifies pour les classes


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

Conventions :
les noms de classes commencent par une majuscule les noms dattributs et de mthodes commencent par une minuscule
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 4

Notations pour les objets

leCompteDePaul

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

: Compte

leCompteDePaul : Compte

Convention :
les noms dobjets commencent par une minuscule et sont souligns
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 5

Liens (entre objets)


Un lien indique une connexion entre deux objets
APourCompte>

paul : Client
APourCompte>

c1 : Compte

pierre : Client
APou rCom pte>

c2 : Compte

marie : Client

c3 : Compte

Conventions :
les noms des liens sont des formes verbales et commencent par une majuscule > indique le sens de la lecture (ex: paul APourCompte c1 )
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 6

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

pierre : Client

titulaire

compte

c1 : Compte

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
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 7

Associations (entre classes)


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

Client

Compte

Diagramme de classes (modlisation)

APourCompte>

paul : Client

c1 : Compte

APourCompte>

pierre : Client
APou r C om pte>

c2 : Compte

marie : Client

c3 : Compte

Diagramme dobjets (instances)


8

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

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 nest pas le cas des associations)

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

Cardinalits dune association


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

Client

titulaire

Compte

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

A P ourCompt e>

paul : Client

c1 : Compte

A P ourCompt e>

pierre : Client
A P ou rC o m pt e>

c2 : Compte

marie : Client

c3 : Compte

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

10

Utiliser les rles pour accder aux objets

APourCompte>

0..* comptes

Client

titulaire

Compte

paul.comptes = {c1} pierre.comptes = {c2,c3} marie.comptes = {} c1.titulaire = paul c2.titulaire = pierre c3.titulaire = pierre

APourCompte>

paul : Client

c1 : Compte

APourCompte>

pierre : Client
APou r C om pte>

c2 : Compte

marie : Client

c3 : Compte

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

11

Contraintes entre associations


Les cardinalits ne permettent pas dexprimer toutes les contraintes...
1 Client titulairePrincipal 0..* 0..* 0..* Compte numro solde ...

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

dcrire les contraintes en langue naturelle (ou en OCL le langage de contrainte dUML)

(1) Un client ne peut pas tre la fois titulaire principal et co-titulaire dun mme compte. (2) Les titulaires dun compte sont le titulaire principal et les co-titulaires le cas chant
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 12

Diagramme de classes
1..4
titulaires

Client

0..*

Compte numro solde ... 1

1..*

Banque numro nom

1..* 0..* Consortium 1 0..*

1 signataire CarteBleue Code retraitMax

0..*
virementPossible

0..*

0..1

EstAcceptPar>

1..*

Distributeur

(1) Le signataire de la carte bleue associe un compte est lun 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.
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 13

Diagrammes dobjets
EstAcceptPar>

: Distributeur

: CarteBleue
signataire

fred : Client

titulaires

c4 : Compte

: Banque

: Consortium

: CarteBleue
signataire

paul : Client
titulaires

c1 : Compte

: Banque

pierre : Client

titulaires

c2 : Compte

titulair

: Consortium

es

titulaires

marie : Client
signataire

c3 : Compte : CarteBleue
EstAcceptPar>

: Banque

sophie : Client
EstAcceptPar>

: Distributeur

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

14

Diagrammes de classes vs. dobjets

Un diagramme de classes

dfinit lensemble de tous les tats possibles les contraintes doivent toujours tre vrifies dcrit un tat possible un instant t, un cas particulier doit tre conforme au modle de classes expliquer un diagramme de classe (donner un exemple) valider un diagramme de classe (le "tester")

Un diagramme dobjets

Les diagrammes dobjets peuvent tre utiliss pour


Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

15

Diagrammes de classes vs. dobjets


Client 1..4
titulaires

0..*

Compte numro solde ... 1 0..*

1..*

Banque numro nom

1..*

signataire

0..* Consortium 1 0.. *

0..*

CarteBleue Code retraitMax

0..1

virementPossible

EstAcceptPar >

Distributeur 1.. *

> : : Cli en t t i t u tl i a ti u r l e a s i r e s : : : Co mp : te Co mp : te Co mp > te

: : : Co ns ort iu m : Co : ns B ort a iu : n m Di q st r u ibu e te ur : Cli en t t i t u tl i a ti u r l e a s i r e s

> : : : : Co mp : te Co mp : te Co mp > te

: : : Co ns ort iu m : Co ns ort iu m : Cli en t t i t u tl i a ti u r l e a s i r e s

> : : : : Co mp : te Co mp : te Co mp > te

: : : Co ns ort iu m : Co ns ort iu m

: Cli en : t Cli en : t Cli en t

t i t u i s : l t i a u g i l n r a a e i t s r a e i s r e

>

t1

: B a n q :u B e a : n Di q st r u ibu e te ur

: Cli en : t Cli en : t Cli en t

: >

t2

: B a n q :u B e a : n Di q st r u ibu e te ur

: Cli en : t Cli en : t Cli en t

: >

t3

: B a n q :u B e a : n Di q st r u ibu e te ur

...
16

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

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

"Super classe"

Compte

Homme

Femme

"Sous classes"

Compte Epargne

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

17

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} * Banque

CompteEpargne tauxIntrt ajouterIntrts () {tauxIntrt < 100}

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

18

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

Compte pargne

ce3

Compte

Comptepargne

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

19

Synthse des concepts de base

Classe

attribut mthode

Association

rle cardinalit

Gnralisation

o1 o2

o1

o3 o4 o2

o1

o3 o2 o5

Objets

Liens

Inclusion ensembliste
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 20

Exemple
subordonns * 1..* employs 0..1

Personne
directeur 0..1

Socit

(1) Le directeur de tout employ est employ dans la mme socit. (2) Dans toute socit il y a au moins une personne qui nest dirige par personne (le directeur de la socit). (3) Une personne ne peut pas tre directeur delle mme ...
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 21

Exemple

parents mre 0..1 pre 0..1

0..2
paul

p oux p re

p ouse mre

marie

p arents

Personne
enfants * 0..1 sexe

pouse 0..1
enfants

joe

enfants p arents

poux

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

22

Diagrammes de classes concepts additionnels


Principe dconomie de moyens
Concepts utiliser bon escient, lorsque ncessaire et uniquement lorsque ncessaire...

Principe KISS
Keep It Small and Simple
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 daprs Jean-Marie Favre

Rappels

UML est un ensemble de notations

De nombreuses utilisations possibles


Notation simple vs. complexe Notation plus ou moins formelle Notation extensible

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

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. ...

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


Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 25

+ # - Visibilit des lments


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

+ public # protg - priv ~ paquetage

visible universellement visible dans la classe et ses sous-classes visible dans la classe uniquement visible dans le paquetage

A noter

N'a pas de sens dans un modle abstrait Uniquement vue interne logiciel : conception. N'utiliser que lorsque ncessaire.

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

26

Dclaration d'attributs
[ visibilit ] nom [card ordre] [ : type ] [ = valeur-initiale ] [ { proprits... } ] Attributs spciaux - de classe. - abstrait. - driv. Souligns Italique nom

nom ou encore {abstract} /nom Les attributs cardinalit multiple peuvent possder un ordre. Proprits : changeable, addOnly, frozen addOnly, exemples: age - age : Integer = 0 # age [0..1] : Integer # numsecu : Integer {frozen} frozen} # motsCls [*] : String {addOnly} {addOnly}
Adapter le niveau de dtail au niveau d'abstraction
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 27

Dclaration d'oprations
[ visibilit ] nom [ ( params ) ] [ : type_retourn ] [ { proprits... } ] params := [ in | out| inout ] nom [ : type] [ =defaut ] [{proprits... } ] Exemples :

getAge() + getAge() : Integer - updateAge( in date : Date ) : Boolean + getAge() : Integer {isQuery}

Adapter le niveau de dtail au niveau d'abstraction

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

28

Navigation
Association unidirectionnelle On ne peut naviguer que dans un sens

titulaire

Client

Compte

Ce dtail nest a priori utile que lors de la conception En cas de doute, ne pas mettre de flche !!!
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 29

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

Voiture

Pneu Jante

Roue

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


Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 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 4

Pneu Jante

Voiture

Roue

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

31

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..*

Document

Chapitre
0..*

Section Figure

0..1

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

32

Composition
1 1..* 1..*

Document

Chapitre
0..* 1..*
: section

Section Figure

: chapitre : section : gure : document : chapitre : gure


Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 33

: section

Les composants forment un arbre

Composition

Polygone

3..* x y

Point

Cercle rayon

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

34

Autres notations pour la Composition


1

Volant Roue

Voiture

4 *
siges

Sige

Voiture Volant
1

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

Roue 4

siges : Sige
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 35

Associations intra vs. inter composites


1

Volant Roue
* 1

0..1

Voiture

4 *

Voiture
0..1

Constructeur

Volant

Constructeur

1 *

Roue 4

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

36

Exemple

Polygone
succ 1

initial 1 pointsLis

3..* * *
deplacer() supprimer()

Point
deplacer() supprimer()

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

37

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

Figure

Partage possible Pas de consensus sur la signification exacte de l'aggrgation Utiliser avec prcautions (ou ne pas utiliser...)
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 38

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

Personne

Socit

Emploi
salaire augmenter()

Le nom de la classe correspond au nom de lassociation


Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 39

Classes associatives
employ socit 0..2

Personne

Socit

Emploi
salaire augmenter()
e1 salaire = 10000 s1

employ employ

e2 salaire = 2000

pierre e3 marie salaire = 16000


employ

s1

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

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

40

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

p1

Emploi>

s1

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

p1
: Emploi salaire = 2000

s1

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

41

Classes associatives
employ socit 0..2

Personne

Socit
e1 p 1 s1

Emploi
salaire

Ci-dessus, une personne peut avoir deux emplois, mais pas dans la mme socit
e1 p 1 s1 e2

employ

0..2

Personne

Emploi
salaire

socit 1

Socit

Ci-dessus, une personne peut avoir deux emplois dans la mme socit
Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 42

Classes associatives

Virement
montant

Ou ?
*

Virement
montant * * 1 compteCrdit

compteDbit

compteDbit 1

compte

compte

compteCrdit

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

43

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

Personne

Socit

Emploi
salaire augmenter()
subordonns

responsable

0..1

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

44

Contraintes sur les associations


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

RelevDe Compte

lignes * {ordered,addOnly}

Ligne Opration

Il est possible de dfinir de nouvelles contraintes


Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 45

Synthse sur les associations


Nom de rle sens de lecture Nom d association

Cardinalits

ClasseA

roleA {frozen}

<AssociationX

0..*

ClasseB AssociationX
attributZ

Composition (ou aggregation

) Classe associative

Navigation

Contrainte

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

46

Exemple
Graphe

*
{frozen}

Polygone

1 *

Noeud
preds

* succs

Arc
2..* {ordered}

{ordered,frozen}

Points

Poignes
0..1 *

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

47

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.
Repertoire
nom

0..1

Fichier

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


Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 48

Associations vs. Associations qualifies


Banque
ncpt

0..1

Personne

Banque
* Client
ncpt

clients *

Personne
ncpt

Banque
* *

Personne

Banque
* *

Client
ncpt

Personne
* *
49

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

Cardinalit des Associations Qualifies


Banque
nc

0..1

Compte

Echiquier

nl : NumLigne nc : NumCol

Case

Banque

titre

Employe

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

50

Exemple
*
membres

Association1901 titre:Titre

Personne
* 1

Titre = enum {President, Tresorier, Secretaire }

membres

fred sylvia ahmed joe


51

membres

a1

#Tresorier #President #Secretaire

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

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

Polygone Cercle surface() surface() Carre surface() Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006
52

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

Chauffage

Appareil lectrique

PoelA Mazout

Chauffage lectrique

FourA MicroOndes

Certains langages de programmation interdisent lhritage multiple


Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006 53

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 ?

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

54

Points lis lhritage et la classification


Sauf si le contraire est indiqu explicitement, en UML les hypothses par dfaut sont : 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

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

55

Exemple

parents 0..2 *

* *

enfants

Personne

mre 0..1

Femme

pouse 0..1

poux 0..1

0..1

pre

Homme

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

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

Retrait * Distributeur

Distributeur

Cyrille Desmoulins Cours UML MIAGE 3. 2005-2006

57