Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UML
Diagrammes de classes
Delphine Longuet
delphine.longuet@lri.fr
Tests d'acceptation
Spcication
Tests systme
Conception
architecturale
Conception
dtaille
Tests d'intgration
Tests unitaires
Dveloppement
D. Longuet - UML
Objets et classes
Conception oriente objet : Reprsentation du systme comme un
ensemble d'objets interagissant
Diagramme de classes
Objets et classes
Objet
attributs
oprations
D. Longuet - UML
MonLivretA : Compte
numro = 123456
devise = EUR
solde = 3509,43
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
Objets et classes
Classe : Regroupement d'objets de mme nature (mmes attributs +
mmes oprations)
Objet = instance d'une classe
nom de la classe
MonCompteJoint : Compte
MonLivretA : Compte
numro = 123456
devise = EUR
solde = 3509,43
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
numro = 854126
devise = EUR
solde = 2215,03
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
MonCompteSuisse : Compte
numro = 70054568
devise = CHF
solde = 121000
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
D. Longuet - UML
Compte
instances de
attributs
numro: int
devise: Devise
solde: oat
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
oprations
5
Classes
Attributs
D. Longuet - UML
numro: int
devise: Devise
solde: oat
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
JeanDupont: Personne
nom = "Dupont"
prnom = "Jean"
adresse = "Montrouge"
naissance = 20/08/1990
D. Longuet - UML
possde
MonLivretA : Compte
numro = 123456
devise = EUR
solde = 3509,43
possde
possde
JeanDupont: Personne
nom = "Dupont"
prnom = "Jean"
adresse = "Montrouge"
naissance = 20/08/1990
sesComptes
possde
possde
MonCompteJoint : Compte
numro = 854126
devise = EUR
solde = 2215,03
MonLivretA : Compte
numro = 123456
devise = EUR
solde = 3509,43
MonCompteSuisse : Compte
numro = 70054568
devise = CHF
solde = 121000
D. Longuet - UML
possde
possde
JeanDupont: Personne
nom = "Dupont"
prnom = "Jean"
adresse = "Montrouge"
naissance = 20/08/1990
possde
possde
sesPropritaires
MonCompteJoint : Compte
numro = 854126
devise = EUR
solde = 2215,03
MonLivretA : Compte
numro = 123456
devise = EUR
solde = 3509,43
MonCompteSuisse : Compte
numro = 70054568
devise = CHF
solde = 121000
D. Longuet - UML
nom: string
prnom: string
adresse: string
naissance: Date
ouvrirCompte(init : oat)
D. Longuet - UML
Compte
rle
Personne
sesComptes
sesPropritaires
1..2
cardinalit
possde
nom de
l'association
(optionnel)
numro: int
devise: Devise
solde: oat
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
10
Attribut et association
Association
Personne
nom: string
prnom: string
adresse: string
naissance: Date
ouvrirCompte(init : oat)
D. Longuet - UML
sesPropritaires
1..2
sesComptes
*
numro: int
devise: Devise
solde: oat
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
11
Attribut et association
Association
Compte
numro: int
devise: Devise
solde: oat
sesPropritaires : Personne[2]
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
12
Attribut et association
Association
Personne
nom: string
prnom: string
adresse: string
naissance: Date
sesComptes : List(Compte)
ouvrirCompte(init : oat)
D. Longuet - UML
sesPropritaires
1..2
sesComptes
*
numro: int
devise: Devise
solde: oat
sesPropritaires : Personne[2]
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
13
Cardinalits
Nombre de B associs un A
A
n
n,m,p
Exactement n
Exactement n ou m ou p
n..m
Entre n et m
n..*
Au moins n
Plusieurs (0 ou plus)
D. Longuet - UML
14
Association rexive
Diagramme de classes
Personne
nom: string
prnom: string
naissance: Date
parents
2
*
enfants
association rexive
(d'une classe vers
elle-mme)
D. Longuet - UML
JeanDupont : Personne
MarieDupont : Personne
nom= "Dupont"
prnom= "Jean"
naissance= 20/08/1990
nom= "Dupont"
prnom= "Marie"
naissance= 4/12/1992
PierreDupont : Personne
nom= "Dupont"
prnom= "Pierre"
naissance= 30/05/1992
LucieDupont : Personne
nom= "Dupont"
prnom= "Lucie"
naissance= 10/02/1996
VictorDupont : Personne
nom= "Dupont"
prnom= Victor
naissance= 12/07/2012
15
Association multiple
plusieurs associations
entre deux classes
Diagramme de classes
Personne
nom: string
prnom: string
naissance: Date
propose
loue
*
Appartement
* adresse: string
pices : int
* loyer : oat
loue
propose
AlainDupuis : Personne
nom= "Dupuis"
prnom= "Alain"
naissance= 15/01/1983
D. Longuet - UML
BLR145 : Appartement
adresse = "145 av gal Leclerc,
Bourg-la-Reine"
pices = 2
loyer = 900
Cach23 : Appartement
loue
16
Navigabilit
Orientation d'une association
rle
rle
tte
1
0..1
Nud
contenu : int
1
0..1
suivant
Par dfaut, associations navigables dans les deux sens (pas de che)
D. Longuet - UML
17
Classe-association
Permet de paramtrer une association entre deux classes par une classe
Personne
nom: string
prnom: string
naissance: Date
1..*
Entreprise
nom: string
Emploi
intitul : string
dbut: Date
n: Date
classe-association
Emploi
1
* intitul : string
dbut: Date
n: Date
1..*
Entreprise
nom: string
18
Classe-association
Exemple de diagramme d'objets
Dveloppeur : Emploi
MarieDupont : Personne
nom= "Dupont"
prnom= "Marie"
naissance= 4/12/1992
JeanDupont : Personne
nom= "Dupont"
prnom= "Jean"
naissance= 20/08/1990
AlainDupuis : Personne
nom= "Dupuis"
prnom= "Alain"
naissance= 15/01/1983
D. Longuet - UML
Essilor : Entreprise
nom= "Essilor"
ville = "Crteil"
Fnac : Entreprise
nom= "Fnac"
ville = "Bordeaux"
RespClientFnac : Emploi
intitul = "Responsable clients"
dbut = ...
n = ...
19
Association n-aire
Association reliant plus de deux classes
tudiant
Enseignant
1
1..*
association ternaire
Cours
D. Longuet - UML
20
Agrgation
Association particulire entre classes
Agrgation faible
Composition
Pice
1..*
3..*
agrgation faible
D. Longuet - UML
Mur
Brique
composition
21
Agrgation faible
Agrgation par rfrence
1..*
3..*
Mur
agrgation faible
D. Longuet - UML
22
Composition
Agrgation par valeur
Brique
composition
D. Longuet - UML
23
Hirarchie de classes
Principe : Regrouper les classes partageant des attributs et des
oprations et les organiser en arborescence
Spcialisation : rainement d'une classe en une sous-classe
Gnralisation : abstraction d'un ensemble de classes en super-classe
Comptepargne
CompteCourant
numro: int
devise: Devise
solde: oat
dcouvertAutoris : oat
fraisDcouvert : oat
D. Longuet - UML
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
numro : int
devise : Devise
solde : oat
plafond : oat
taux : oat
dposer (montant : oat)
retirer(montant : oat)
solde() : oat
calculerIntrts() : oat
24
Hirarchie de classes
Principe : Regrouper les classes partageant des attributs et des
oprations et les organiser en arborescence
Spcialisation : rainement d'une classe en une sous-classe
Gnralisation : abstraction d'un ensemble de classes en super-classe
Compte
numro: int
devise: Devise
solde: oat
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
spcialisation
dcouvertAutoris : oat
fraisDcouvert : oat
gnralisation
Comptepargne
CompteCourant
D. Longuet - UML
super-classe
sous-classes
plafond : oat
taux : oat
calculerIntrts() : oat
25
Hirarchie de classes
Principe : Regrouper les classes partageant des attributs et des
oprations et les organiser en arborescence
Hritage : Construction d'une classe partir d'une classe plus haute
dans la hirarchie (partage des attributs, oprations, contraintes...)
Compte
numro: int
devise: Devise
solde: oat
dposer(montant : oat)
retirer(montant : oat)
solde() : oat
classes hritant
de la classe Compte
CompteCourant
dcouvertAutoris : oat
fraisDcouvert : oat
D. Longuet - UML
Comptepargne
plafond : oat
taux : oat
calculerIntrts() : oat
26
Classe abstraite
Classe sans instance car certaines oprations non dnies
D. Longuet - UML
Forme
nom : string
surface() : oat
27
Polymorphisme
Contexte : Dnition d'une opration abstraite dans les classes
hritant d'une classe abstraite
Opration polymorphe : Opration dnie dans direntes sous-classes
mais opration spcique la sous-classe
Forme
nom : string
surface() : oat
Rectangle
longueur : oat
largeur : oat
opration
polymorphe
Cercle
rayon : oat
surface() : oat
surface() : oat
D. Longuet - UML
28
Interface
Liste d'oprations constituant un contrat respecter par les classes
ralisant l'interface
Point
abscisse : oat
ordonne : oat
interface
Comparable
gal(Object o) : boolean
suprieur(Object o) : boolean
gal(Object o) : boolean
suprieur(Object o) : boolean
classes ralisant
l'interface
D. Longuet - UML
Date
jour : int
mois : int
anne : int
gal(Object o) : boolean
suprieur(Object o) : boolean
di(Date d) : int
String
content : string
gal(Object o) : boolean
suprieur(Object o) : boolean
print()
29
Notations avances
Vecteur
- dbut : Point
- longueur : oat = 0.0
- angle : oat = 0.0
+ / n : Point
+ contient(in p : Point) : boolean
+ dplace(inout p : Point)
Attributs
[visibilit] [driv] nomAttribut [: type] [= valeur par dfaut]
Oprations
[visibilit] nomOpration [(liste Paramtres)] [: typeRetour]
Paramtre
[direction] nom : type [= valeur par dfaut]
Direction
in | out | inout (par dfaut : in)
D. Longuet - UML
30
Notations avances
attributs privs
attribut driv
Vecteur
- dbut : Point
- longueur : oat = 0.0
- angle : oat = 0.0
+ / n : Point
+ contient(in p : Point) : boolean
+ dplace(inout p : Point)
oprations publiques
Visibilit
+ : public, accessible toutes les classes
# : protg, accessible uniquement aux sous-classes
- : priv, inaccessible tout objet hors de la classe
Pas de visibilit par dfaut
Attribut driv : Peut tre calcul tout moment partir des autres
attributs
D. Longuet - UML
31
Notations avances
Attributs et oprations de classes
D. Longuet - UML
32
Contraintes
Proprits :
D. Longuet - UML
33
Contraintes
{age = di(naissance,today)}
Personne
nom: string
naissance: Date
/ age : int
{age 0}
1
appartient
{subset}
administre
* {ordered}
ExpriencesPro
entreprise : string
entre : Date
sortie : Date
D. Longuet - UML
*
*
Groupe
thme : string
cration : Date
Contraintes en OCL
Banque
nom: string
1..*
1
banque
banques
1..* clients
Client
nom: string
naissance: Date
1..* comptes
Compte
1
propritaire
dest
1
1
orig
Virement
montant : oat
0..* date : Date
0..*
context b : Banque
inv : b.clients -> forAll(cl | cl.comptes
-> select(c | c.banque = b) -> size() >= 1)
Les virements ne sont autoriss qu'entre des comptes partageant la mme devise.
context v : Virement
inv : v.orig.devise = v.dest.devise
D. Longuet - UML
35