1
Gnie logiciel
UML : Unified Modeling Language
A. Madani (madaniabdellah@[Link])
2
Gnie Logiciel
UML
ntroduction
Cycle de vie dun logiciel
Historique dUML
Diagrammes UML
Diagrammes de classes et d'objets
Diagrammes des cas d'utilisation
Autres diagrammes
Passage vers le code
De UML vers Java
UML et les bases de donnes
Langage de contraintes : OCL
tudes de cas
De lanalyse des besoins au code
3
Cycle de vie dun logiciel
A. Madani (abdellah_madani@[Link])
3
Processus (ensemble dactivits) ncessaire
au dveloppement et la maintenance dun
logiciel
Compos de plusieurs phases autonomes
mais dpendantes (interdpendantes).
Chaque tape se termine par la remise de un
ou plusieurs documents valid conjointement
par lutilisateur et le dveloppeur.
4
Cycle de vie dun logiciel
A. Madani (abdellah_madani@[Link])
4
tapes ncessaires la ralisation dun logiciel:
Analyse
Conception
Codage (mplmentation)
Tests
Livraison
Maintenance
5
Cycle de vie dun logiciel
Modle en Cascade (Waterall!
Analyse
Conception
Implmentation
Tests
Maintenance
5
A. Madani (abdellah_madani@[Link])
"
Cycle de vie dun logiciel
#nalyse
Elle a pour but de dgager le problme
tudier.
Le rsultat de l'analyse est le cahier de
charges (exprim dans une langue naturelle)
contenant les besoins du futur systme.
Cette spcification est informelle.
3 phases:(Faisabilit, Spcifications des
besoins, Organisation du projet)
6
A. Madani (abdellah_madani@[Link])
$
Cycle de vie dun logiciel
aisa%ilit
A. Madani (abdellah_madani@[Link])
7
Premire tape du cycle de vie dun logiciel
Rpondre deux questions :
Est-ce que le logiciel est ralisable ?
Est-ce que le dveloppement propos vaut la
peine dtre mis en ouvre ?
>> tudier le march pour dterminer sil
existe un march potentiel pour le produit.
&
Cycle de vie dun logiciel
'(ci)ication des %esoins
A. Madani (abdellah_madani@[Link])
8
Permet de dfinir ce que doit faire le logiciel et
non comment il le fait
Quatre types de spcifications
Spcifications gnrales
Spcifications fonctionnelles
Spcifications dinterface
Spcifications techniques
*
Cycle de vie dun logiciel
'(ci)ication des %esoins
A. Madani (abdellah_madani@[Link])
9
La spcification gnrale consiste identifier :
Objectifs atteindre
Contraintes (utilisation du matriel et outils
existants)
Rgles de gestion respecter
1+
Cycle de vie dun logiciel
'(ci)ication des %esoins
A. Madani (abdellah_madani@[Link])
10
Spcification fonctionnelles est la description des
fonctionnalits du futur logiciel de manire
dtaille que possible
Spcification dinterface dcrit les interfaces du
logiciel avec le monde extrieur : homme
(HM), autres logiciel (Middleware), machines
11
Cycle de vie dun logiciel
'(ci)ication des %esoins
A. Madani (abdellah_madani@[Link])
11
Spcification technique :(tude de lexistant)
Moyens daccs (local, distant, nternet, .)
Temps de rponse acceptable (gestion des GAB,
gestion des emplois de temps, .)
Plateforme (Windows, Unix, .)
Quantit dinformations stocker (choix du
SGBDR, .)
12
Cycle de vie dun logiciel
,rganisation du (ro-et
A. Madani (abdellah_madani@[Link])
12
Appele aussi Planification et gestion de projet
Permet de dterminer la manire de dvelopper le
logiciel
La phase de planification permet de :
dcouper le projet en tches
dcrire leur enchane!ent dans le temps,
affecter " chacune une dure et un effort
13
Cycle de vie dun logiciel
,rganisation du (ro-et
A. Madani (abdellah_madani@[Link])
13
Plusieurs tapes :
Analyse des cots: estimation du prix du projet
Planification: calendrier pour le dveloppement
(jours ouvrables, jours fris, nombre dheures de
travail par jours, .)
Rpartition des tches: distribuer les tches et les
sous tches (affectation des ressources aux
tches)
14
Cycle de vie dun logiciel
Conce(tion
Permet de fournir une description fonctionnelle
(formelle) du systme en utilisant une
mthode.
Les mthodes proposent des formalismes
(dans la plupart des temps graphiques) pour
concevoir le systme.
Deux types de conception :
Conception gnrale
Conception dtaille
14
A. Madani (abdellah_madani@[Link])
15
Cycle de vie dun logiciel
Conce(tion gnrale
A. Madani (abdellah_madani@[Link])
15
Appele aussi : 'Conception architecturale
Se focaliser sur larchitecture gnrale du
systme : dcomposition du systme en sous
systme
Exemple, pour la gestion scolaire :
Estudiantine (tudiants, notes, prof, filires, .)
Administrative (personnel administratif, .)
Bibliothque (Ouvrages, auteurs, adhrents, .)
1"
Cycle de vie dun logiciel
Conce(tion dtaille
A. Madani (abdellah_madani@[Link])
16
Produire une description externe de chacune
des procdures, fonctions et des structures de
donnes (conception classique)
Produire de manire prcise les contenus des
objets en terme de proprits et de mthodes
(conception Oriente Objet)
1$
Cycle de vie dun logiciel
i.([Link] (/alisation!
Des programmes seront labors afin de
mettre en ouvre des solutions techniques
prcdemment retenues
Plusieurs types langages sont utiliss:
Langages classiques (C, Pascal, Fortran, .)
Langages orients objets (C++, Java, C#, .)
17
A. Madani (abdellah_madani@[Link])
1&
Cycle de vie dun logiciel
Codage et 0ests
A. Madani (abdellah_madani@[Link])
18
On distingue plusieurs types de tests :
Test unitaire: tester les parties du logiciel par les dveloppeurs
Test dintgration: tester pendant lintgration des modules
Test systme: tester dans un environnement proche celui de
production
Test alpha: tests faits par le client sur le site de dveloppement
Test bta: tests faits par le client sur le site de production
Test de rgression: enregistrer les rsultats des tests et les
comparer avec ceux des anciens versions pour dterminer si la
nouvelle na pas apport de dgradation de performance.
1*
Cycle de vie dun logiciel
Livraison
A. Madani (abdellah_madani@[Link])
19
Fournir au client une solution logiciel qui
fonctionne correctement.
Plusieurs tches :
nstallation: rendre le logiciel oprationnel sur le
site du client
Formation: enseigner aux utilisateurs se servir
de ce logiciel
Assistance: rpondre aux questions de lutilisateur
2+
Cycle de vie dun logiciel
Maintenance
A. Madani (abdellah_madani@[Link])
20
Mettre jour et amliorer le logiciel
La maintenance comprend :
Corrective : correction des erreurs et anomalies
Adaptative : adaptation de nouveaux
environnements
volutive ou Perfective : ajout de nouvelles
fonctionnalits
21
Cycle de vie dun logiciel
[Link]
A. Madani (abdellah_madani@[Link])
21
Cahier des charges : description des fonctionnalits
dsires (dcrites par lutilisateur)
Spcifications : dcrit ce que doit remplir le logiciel
(dcrites par le dveloppeurs) :
Modle Objet : Classes et objets
Scnarios des cas dutilisation : diffrents enchanements
possibles du point de vue de lutilisateur
HM : propositions des interfaces homme-machines
.
22
Cycle de vie dun logiciel
[Link]
A. Madani (abdellah_madani@[Link])
22
Calendrier du projet: indique les tches, les
dlais et les ressources
Plan de test: indique les procdures de tests
appliquer
Manuel dutilisateur: mode demploi du logiciel
dans sa version finale
23
Cycle de vie dun logiciel
[Link]
A. Madani (abdellah_madani@[Link])
23
Code source: code complet du produit fini
Rapport des tests: dcrit les tests effectus et
les ractions du systme
Rapport des dfauts: dcrit les comportements
du systme qui nont pas satisfait le client.
24
2istori3ue
Deux approches
Approche fonctionnelle
1960 fin 1970
l'important c'est les traitements
Sparation nette des donnes et traitements
Approche objet
1980 dbut 1990 : premires gnration
L'important c'est l'objet
Objet = donnes + traitements
25
2istori3ue
Dbut des annes 1990
les premiers processus de dveloppement ##
apparaissent
prolifration des mthodes et notations taient la
cause de grande confusion :
mthode ##$ de Grady Booch (1991)
mthode #%& de James Rumbaugh (1991)
mthode ##'( de var Jacobson (1991)
mthode ##)*##$ de +oad and ,ourdon (1992)
mthode de 'chlaer and %ellor (1992)
Etc.
2"
2istori3ue
Fin 1994
J. Rumbaugh rejoint G. Booch chez Rational Software
OMT + OOD -nified %ethod (oct 1995)
Fin 1995
. Jacobson les rejoint chez Rational Software
Unified Method + OOSE -%. 0/9 (juin 1996)
Dbut 1997
Partenaires divers : Microsoft, Oracle, BM, HP et autres leaders
collaborent
-%. 1/0 (jan 199)
Fin 1997
lOMG (Object Management Group) retient -%. 1/1 comme
nor!e de !odlisation
2$
2istori3ue
Les versions se succdent :
Dbut 1998
UML 1.2
En 1998
UML 1.3
En 2001
UML1.4
En 2003
UML 1.5
En 2005
UML 2.0
2&
4uest ce 3ue UML 5
UML(-nified %odeling .anguage0 un
langage de !odlisation unifi
.angage = syntaxe + smantique :
syntaxe : notations graphiques consistant
essentiellement en des reprsentations
conceptuelles d'un systme
smantique : sens prcis pour chaque notation
2*
4uest ce 3ue UML 5
-%. est caractris par 1
un travail d'expert
utilise lapproche oriente objet
normalis, riche
Formel : sa notation limite les ambigut et les
incomprhensions
langage ouvert
NDPENDANT du langage de programmation
Domaine d'application : permet de modliser n'importe quel
systme
Support par plusieurs outils (AGL) : Objecteering, Open
tools, Rational Rose, PowerAMC, WinDesign, .
3+
4uest ce 3ue UML 5
Attention
UML est un langage (et non pas une mthode)
qui :
permet de reprsenter les modles
ne dfinit pas le processus d'laboration des
modles.
31
Diagrammes d'UML
$iagra!!e
Classes
+o!posants $ploie!ent +olla2oration
Etats Transitions Squence
#2jets
Cas d utilisation
+as d 3utilisation +lasses 4tats &ransitions '5uence
(st sorte de
)cti6it
UML1.1 comprend 9 de diagrammes :
32
Diagrammes d'UML
UML dfinit deux types de diagrammes, structurels
(statiques) et comportementaux (dynamiques)
%odlisation de la structure
diagramme de classes
diagramme dobjets
diagramme de composants
diagramme de dploiement
%odlisation du co!porte!ent
diagramme de cas d'utilisation
diagramme dtats
diagramme dactivits
diagramme de collaboration
diagramme de squence
33
Diagramme dUML
Les diagramme dUML peuvent tre utiliss pour
reprsenter diffrents points de vues :
7ue e8terne : vue du systme par ses utilisateurs
finaux
7ue logi5ue stati5ue : structure des objets et leurs
relations
7ue logi5ue d9na!i5ue : comportement du
systme
7ue d3i!pl!entation : composants logiciels
7ue de dploie!ent : rpartition des composants
34
Diagramme dUML
Composants
Dploiement
Cas dutilisation
Activits
tats transitions
Collaboration
Squence
6ue 7.([Link]
(co.(osants logiciels!
6ue d([Link]
([Link]
di.(lantation!
6ue logi3ue dyna.i3ue
(Co.([Link]!
Vue logique statique
(Structure des objets)
6ue e9terne
()onctions syst.e!
Objets
Classes
35
UML
!iag"amme# de cla##e# et
d$objet#
3"
1iagra..e de classes
Permet de donner une vue statique du systme en
terme de :
Classes d'objets
Relations entre classes
Associations
agrgation/composition
hritage
La description du diagramme de classes est centre
sur trois concepts :
Le concept dobjets
Le concept de classes dobjets comprenant des attributs et
des oprations
Les diffrents types de relations entre classes.
3$
Conce(t d:o%-et
#2jet = un concept, abstraction ou une chose
autonome qui a un sens dans le contexte du
systme modliser
une personne : le client El Alami M.
un o2jet concret : le livre intitul nitiation .
un o2jet a2strait : le compte bancaire n
1915233C
.
3&
Conce(t d:o%-et
Remarque
Un objet doit :
tre autonome
Avoir une signification dans le systme
En relation avec d'autres objets
Ne pas confondre "autonomie" avec
"indpendance"!!
Exemples
Gestion de stock : Clients, Commandes, Articles, .
Gestion scolaire : tudiants, Modules, Filires, .
3*
Conce(t d:attri%ut
Un attribut est une proprit, caractristique
dun objet. Par exemple :
un client a un no!, un prno!, une adresse, un
code client, .
un compte bancaire a un nu!ro, un solde, .
Un attribut doit (gnralement) avoir une
6aleur ato!i5ue
4+
Conce(t d:attri%ut
La description dun attribut comporte :
7isi2ilit attri2ut1t9pe:; 6aleur initiale<
O :
Visibilit :
+ (publique, public) : visible par tous
- (prive, private) : visible seulement dans la classe
# (protge, protected) : visible seulement dans la classe
et dans les sous-classes de la classe.
Nom dattribut
Type de lattribut
Valeur initiale (facultative)
41
Conce(t d:attri%ut
Le type dun attribut peut tre :
Un type de base : entier, rel, .
Une expression complexe : tableaux,
enregistrements, .
Une classe
Exemples dattributs :
% couleu" : enum&'ouge( )e"t( *leu+
, b : boolean - ."ai
% /lient : 0e"#onne
42
Conce(t d:attri%ut
Lorsquun attribut peut tre driv ou calcul
partir d'autres attributs, il est prcd dun *.
Par exemple, une classe Rectangle peut
contenir les attributs suivants :
longueur : rel,
largeur : rel,
/surface : rel.
Rectangl es
-
-
-
Largeur
Longueur
/Surface
: fl oat
: fl oat
: fl oat
= 10
43
Conce(t d:attri%ut
On distingue deux types d'attributs :
Attribut d'instance :
Chaque instance de la classe possde une valeur
particulire pour cet attribut
Notation : 7isi2ilit attri2ut1t9pe:; 6aleur initiale<
Attribut de classe
Toutes les instances de la classe possde la mme valeur
pour cet attribut
Notation : 7isi2ilit attri2ut1t9pe:; 6aleur initiale<
quivalent en C++, Java : static
44
Conce(t d:attri%ut
#prations d=instances
#prations de classes
Wi ndow
-
-
-
-
tai l l e
vi si bi l i t
tai l l e_defaut
tai l l e_max
: Rectangle
: bool ean
: Rectangle
: Rectangle
= (100,100)
= true
+
+
+
+
+
<<Constructor>> Wi ndow ()
affi cher ()
cacher ()
getTai l l e_max ()
getTai l l e_defaut ()
: voi d
: voi d
: Rectangl e
: Rectangl e
)ttri2uts d=instances
)ttri2uts de classes
45
Concet d'oration et mt!ode
Une opration est :
un service offert par la classe
une fonction ou une transformation qui peut
tre applique aux objets dune classe.
permet de dcrire le comportement dun
objet. Par exemple, Embaucher ,
Licencier et Payer sont des
oprations de la classe Socit .
4"
Concet d'oration et mt!ode
Une mthode est
limplmentation dun service offert par la
classe (opration).
de diffrents types :
accesseurs (get...): renvoie une information sur
l'tat d'un objet (fonction)
modifieurs (set...): modifie l'tat de l'objet
(procdure)
constructeurs: initialise une nouvelle instance
4$
Concet d'oration et mt!ode
La description dune opration comporte :
7isi2ilit opration>:argu!ents1t9pe:;6aleur
initiale<<01t9pe de rsultat
Visibilit de lopration (-, +, #)
Nom de lopration
Liste des arguments avec leurs types et
ventuellement leurs valeurs par dfaut
Le type du rsultat retourn
4&
Concet d'oration et mt!ode
Exemples d'oprations :
Compte
-
-
-
NCompte
Sol de
Cl i ent
: Stri ng
: fl oat
: Personne
+
+
+
+
<<Constructor>> Compte ()
Deposer (fl oat somme)
Reti rer (fl oat somme)
Avoi rSol de ()
: voi d
: fl oat
: Stri ng
4*
Conce(t de classes do%-ets
+lasse = ensemble dobjets ayant les mmes
proprits (attributs) et le mme comportement
(oprations)
tous les clients sont dcrits par un no!, un prno!, . et
peuvent !archer, parler,courir, .
tous les comptes bancaires ont un nu!ro, un solde, .
et sur lesquels on peut dposer ou retirer l'argent, ou les
consulter
Un objet est instance dune classe, et le fait de
crer un objet d'une classe est dite instanciation.
5+
Conce(t de classes do%-ets
+lasse reprsente par un rectangle trois
parties :
Partie 1 : Nom de la classe
Partie 2 : Attributs (proprits, champs)
Partie 3 : Mthodes (fonctions, oprations)
51
Conce(t de classes do%-ets
Compte
-
-
#
NCompte
Sol de
Cl i ent
: Stri ng
: fl oat
: Personne
= 100
+
+
+
+
<<Constructor>> Compte ()
Deposer (fl oat somme)
Reti rer (fl oat somme)
Avoi rSol de ()
: voi d
: fl oat
: Stri ng
52
Conce(t de classe d:o%-ets
On peut ne pas visualiser les attributs et/ou les
oprations, afin de ne pas alourdir
inutilement le schma.
?o! de la classe
)ttri2uts
#prations
?o! de la classe
)ttri2uts
?o! de la classe ?o! de la classe
#prations
53
8nca(sulation; visi%ilit et inter)ace
Encapsulation est le mcanisme de
regrouper les attributs et les oprations au
sein dune mme entit (classe)
Ce regroupant permet dempcher daccder
directement aux donnes par un autre moyen
que les services proposs (oprations)
Ces services offerts aux utilisateurs
dfinissent ce que lon appelle linterface de
la classe.
54
8nca(sulation; visi%ilit et inter)ace
Donnes
"raitement
}
}
Partie statique, passive
Partie cache, prive
Partie dynamique, comportementale
Partie visible, publique
nterface avec lextrieur
User
55
Mt<odes et classes a%straites
Une mthode est dite abstraite si on connat
son entte, mais pas la manire dont elle
peut tre ralise
Une classe est dite abstraite lorsquelle
dfinit au moins une mthode abstraite
@or!eAo!tri5ue
Ba2stractC
D
D
a2s
ord
1 int
1 int
E
E
E
E
Ba2stractCsurface >0
get)2s >0
get#rd >0
/// >0
1 dou2le
1 int
1 int
5"
Classe = 7nter)ace >
Une interface est une classe spciale dont
toutes les mthodes sont abstraites
Une interface se note en UML avec le
strotype <<interface>> ou symbole
@or!e
5$
?ac@age
Un package permet de regrouper des
classes, des interfaces et des packages.
Les classes, les interfaces et les packages
ne peuvent quun seul package dans lequel
ils sont regroups
5&
?ac@age
Un package est reprsent par un rectangle
possdant un onglet dans lequel est inscrit le
nom du package
5*
7.(ort des (ac@ages
La relation dimport permet une classe dun
package dutiliser les classes dun autre
package.
La relation est monodirectionnelle : elle
comporte un package source et un package
cible.
"+
7.(ort de (ac@ages
La relation dimport sexprime avec une
flche en pointill
Dans lexemple, la classe 'Afficheur a besoin
des classes du package 'Dessin
"1
#ssociations
Relation existant entre une, deux ou
plusieurs classes.
Une association porte un nom (signification)
Reprsente par une ligne rectiligne
"2
#ssociations
Remarques
une association fonctionne (gnralement)
dans les 2 sens (bidirectionnelle)
termes associs : Nom, Sens de lecture,
degr (arit), Multiplicit, Rle, navigabilit et
le qualificateur
"3
#ssociations
#om et sens de lecture
Dcrit la nature (signification) de lassociation
Montre la direction de lecture de lassociation
"4
#ssociations
$%le dune association
Dcrit le rle dune classe dans une association
"5
#ssociations
/Ale dune association
Utile surtout dans deux cas :
Lorsquon a plusieurs associations entre deux
classes avec des rles diffrents
une relation rflexive : relation entre deux
instances dune mme classe
0..4
femme
0..1
mari
Personne
Pi l ote
Passager
Avi on
Personne
""
#ssociations
Classe association
Une association peut avoir des attributs = classeDassociation
"$
#ssociations
Classe association
Les classes association sont utiles quand il y
a des attributs qui sont pertinents
lassociation, mais aucune des classes
impliques.
1..*
0..1
Personne Entrepri se
Empl oi
-
-
Pri ode
Sal ai re
: i nt
: fl oat
"&
#ssociations
degr dune association = nombre de classes participantes
Association unaire : relie 2 instances d'une classe
association binaire : relie 2 classes
association ternaire : relie 3 classes
association n-aire : relie n classes
"*
#ssociations
Multiplicit = nombre de participations dune classe dans une
association
indique chaque extrmit dune association
sous la forme min..max
min, max = 0, 1, *
Exemple gnral
Exemple concret
$+
#ssociations
Exemple ternaire
Pour un couple dinstances de la classe A et de la classe B,
il a au min! r1 instances de la classe " et au max! r2 instances,
#
$1
#ssociations
otation abrge des multiplicits !
1 $!!$ %exactement $&
* '!!( %' ou plusieurs&
n n !! n %exactement n&
1//F 1 ou plusieurs (1 ou plus)
0//1 0 ou 1 (au plus un)
1//100 entre 1 et 100
2G4G5 2, 4 ou 5
$2
#ssociation
Baviga%ilit
Une association est par dfaut
bidirectionnelle.
Cependant, il peut tre utile de se limiter
une seule direction association navigable
1..*
1
Commandes
Cl i ents
$3
#ssociation
Baviga%ilit (89e.(le!
Spcification : on doit tre en mesure de savoir le
client qui a fait la commande et non toutes les
commandes dun client
Conception :
mplmentation : la classe commande doit avoir un
champ faisant rfrence la classe client
1..*
1
Commandes
Cl i ents
$4
#ssociation
Baviga%ilit (89ercice!
Un tudiant peut avoir jusqu 5 copies
dexamens. un tudiant sont associes ses
copies dexamens, mais on ne doit pas
autoriser laccs lauteur de la copie
(notamment avant la correction des copies)
$5
4uali)ication d:une association
La qualification dune association permet de
restreindre la multiplicit dune association.
La qualification se reprsente par un
rectangle plac au niveau de la classe
source du qualificatif.
$"
4uali)ication d:une association
Exemple : une banque contient plusieurs
comptes, d'o le diagramme :
Han5ue +o!pte
1 1//F
Han5ue
+o!pte
?+o!pte
1 1
Par contre, si on connat le NCompte, il y a un
et un seul compte, on obtient alors :
$$
4uali)ication d:une association
Exercice
Un avion est compos de plusieurs siges,
mais dans une range il y a seulement
quatre siges.
$&
#grgation
Type particulier dassociation dans laquelle :
Classe agrgat (compos), classes agrge
(composant)
Entre les deux, il existe une relation de type est
compos de
"grgat "grge
$*
#grgation
Les parties (les composants) sont sparables
de Lagrgat (le tout)
La suppression dune quipe nimplique pas
la suppression des personnes qui la
composent
&+
#grgation
1..*
* 0..*
0..*
1..1
0..1
1..1
0..1
Desti natai re Fi chi er
Ti tre
Texte
E-Mai l
ci , on expri me qu'un fi chi er peut tre attach un emai l (ou a
pl usi eurs, ou mme aucun) et qu'un emai l peut (ou non)
attacher (conteni r une copi e) une ou pl usi eurs fi chi ers.
Un agrgat (compos) peut tre multiple.
&1
Co.(osition
La composition est un cas particulier dune
agrgation dans laquelle la vie des
composants (lment) est lie celle de
lagrgat (compos) : si lagrgat est dtruit
(ou dplac), ses composants le sont aussi.
Dun autre ct, et contrairement
lagrgation, une instance de composant ne
peut tre lie qua un seul agrgat.
La composition se reprsente par un losange
noir (plein).
&2
Co.(osition
la suppression dun ob)et a*r*at entra+ne la suppression des
ob)ets a*r*s
&3
Co.(osition
Un document est compos de plusieurs
paragraphes, qui, son tour, est compos de
plusieurs phrases
Remarquer la propagation des oprations
(copie, suppression,.)
&4
Gnralisation C '(cialisation et
<ritage
La gnralisation est la relation entre une
classe et une ou plusieurs de ses versions
raffines.
On appelle la classe dont on tire les
prcisions la super-classe et les autres
classes les sous-classes.
Cest une relation de type est un (is a) ou
est une sorte de .
La notation utilise pour la gnralisation est
le triangle
&5
Gnralisation C '(cialisation et <ritage
gnraliser = mettre en facteur des classes super-classe
spcialiser = dcrire de nouveaux dtails sous-classes
comparable une association de type est un, is a, kind of
une sous-classe hrite des attributs et oprations de sa super-classe
(classe mre)
&"
Gnralisation C '(cialisation et
<ritage
La classe spcialise (sous-classe)
hrite les mthodes et les attributs de la
classe gnrale (super-classe)
peut ajouter ses propres attributs et
mthodes.
peut redfinir le comportement dune
mthode.
&$
Gnralisation C '(cialisation et
<ritage
Compte
-
-
NCompte
Sol de
: Stri ng
: fl oat
+
+
+
+
<<Constructor>> Compte ()
Dposer (fl oat Somme)
Reti rer (fl oat Somme)
Avoi rSol de ()
: voi d
: fl oat
: Stri ng
CompteEpargne
- Taux : fl oat
+ Avoi rSol de () : Stri ng
&&
Gnralisation C '(cialisation et
<ritage
Remarques
La gnralisation et la spcialisation sont
deux faons pour voir la mme relation, top-
down (spcialisation) ou bottom-up
(gnralisation).
L'hritage est limplmentation de la relation
de la gnralisation/spcialisation.
Une classe peut hriter de plusieurs classes,
on parle alors dun hritage multiple.
&*
Gnralisation C '(cialisation et
<ritage
Spcialisation
Gnralisation
Super classe, classe mre
Sous classes
Classes filles
Classes drives
Personnes
-
-
Code
Nom
: i nt
: Stri ng
+
+
+
<<Constructor>> Personnes (i nt Code, Stri ng Nom)
getNom ()
getnf ()
: Stri ng
: Stri ng
Etudi ants
- Sal ai re : fl oat
+
+
+
<<Constructor>> Etudi ants (i nt Code, Stri ng Nom, fl oat Sal ai re)
getnf ()
getSal ai re ()
: Stri ng
: fl oat
Empl oyes
- Fi l i ere : Stri ng
+
+
+
<<Constructor>> Empl oyes (i nt Code, Stri ng Nom, Stri ng Fi l i ere)
getnf ()
getFi l i ere ()
: Stri ng
: Stri ng
*+
Gnralisation C '(cialisation
une classe peut hriter de plusieurs super-classes
= hritage !ultiple
*1
Gnralisation C '(cialisation
pol9!orphis!e = oprations de mme nom, pol9!orphis!e
= comportement spcifique
*2
Contraintes sur les associations
Concepts avancs des associations
Permettent dimposer des rgles respecter
lors du passage limplmentation
l est possible dattribuer toutes sortes de
contraintes une association
Les contraintes sont reprsentes entre
accolades et peuvent tre exprimes dans
nimporte quel langage (y compris OCL)
*3
Contraintes sur les associations
Les contraintes (prdfinies) souvent utilises :
{ordonn}
{sous ensemble}
{xor}
{addOnly}
{frozen}
*4
Contraintes sur les associations
contrainte DordonnE
ndique que les objets seront ordonns
chaque opration de cration, modification,
suppression, .
1
0..*
{Ordonn}
Personne
Compte
Les comptes dune personne sont ordonns
*5
Contraintes sur les associations
contrainte DsousFense.%leE
ndique quune collection est incluse dans
une autre
Ncessite la prsence dau moins deux
relations
1..*
1..*
{sous-ensembl e}
Ecol e
Personnes
Les personnes qui jouent le rle de dlgu font partie des personnes
qui jouent le rle de parents dlves
Parent dlve
Dlgu
*"
Contraintes sur les associations
contrainte D9orE
ndique que parmi un groupe dassociations,
une seule est valide la fois
1
{xor}
1
1
1
PC Portabl e
Batteri e
Secteur
Un PC Portable est aliment soit partir
dune batterie, soit partir dun secteur
*$
Contraintes sur les associations
contrainte Dadd,nlyE
La contrainte prdfinie {addOnly} autorise
lajout de nouveaux objets, mais pas leur
suppression ni leur mise jour.
1
1//F
1
0//F
Personne .iste
(nfants
Badd#nl9C
*&
Contraintes sur les associations
contrainte D)roGenE
La contrainte prdfinie {frozen} interdit lajout,
la suppression ou la mise jour des liens
dun objet vers les objets de la classe
associe, aprs linitialisation du premier.
2
parent
0//F
enfant
Personne
BfroIenC
**
Contraintes sur les associations
89ercices
Modliser sous forme de diagrammes de
classes :
1. Le prsident dun comit doit tre membre
du comit
2. Une personne qui soumit un article un
journal ne peut pas valuer son propre
article
1++
Contraintes sur les associations
89ercices
Modliser sous forme de diagrammes de
classes :
1. Un vhicule est compos dau moins 2
roues. Le nombre de roues dun vhicule ne
peut pas varier
2. Les employs de lhtel nont pas le droit de
prendre une chambre dans le mme htel.
1+1
Contraintes sur les associations
89ercices
Une personne
Est ne dans un pays (ce pays ne peut tre
modifie)
A visit un certain nombre de pays, dans un
ordre donn, et que le nombre de pays
visits ne peut que crotre
Aimerait encore visiter toute une liste de
pays, et que cette liste est ordonne.
1+2
89e.(le de diagra..e de classes
(1istri%uteur #uto.ati3ue de Han3ue I 1#H!
1+3
1iagra..e do%-ets
Reprsente les objets (instances de classes)
et les liens (instances de relations) un
instant donn
Peut tre utilis pour :
llustrer le modle de classes en montrant un
exemple qui explique le modle
Prciser certains aspects du systme
Exprimer une exception en modlisant des cas
particuliers
Etc.
1+4
1iagra..e do%-ets
Le nom dun objet est soulign
Nom : Classe
Nom
:Classe
1+5
1iagra..e do%-ets
Exemple :
Une entreprise emploie au moins deux
personnes
Une personne travaille dans au plus deux
entreprises
1+"
1iagra..e do%-ets
89e.(le
1(ntreprise
p11Personne p21Personne p31Personne
e11(ntreprise
1Personne
p41Personne
0//2
2//F
(ntreprise
Personne
1+$
8ta(es (our ta%lir un diagra..e
A partir dune description du systme :
1/ Jdentifier un premier ensemble de classes candidates
2/ Jdentifier les associations et les attri2uts
3/ Jdentifier les gnralisations
4/ .ister les traitements, choisir les oprations
5/ 7rifier le modle obtenu
6/ Jtrer jusqu satisfaction .
a! ,upprimer les transiti#its
b! ,assurer que le sc-ma rpond la demande
1+&
UML
!iag"amme# de ca#
d1utili#ation
1+*
1iagra..e des cas dutilisation
Dcrit, sous forme dactions et de ractions,
le comportement dun systme du point de
vue dun utilisateur.
Permet de dfinir les limites du systme et
ses relations avec lenvironnement.
11+
1iagra..e de cas d:utilisation
Sert modliser les aspects dynamiques
d'un systme (Contrairement aux
diagrammes de classes).
Fait ressortir les acteurs et les fonctions
offertes par le systme.
Utilis pour modliser les exigences
(besoins) du client
111
1iagra..es des cas d:utilisation
Comportent plusieurs lments :
Acteurs
Cas d'utilisation
Relations de dpendances, de
gnralisations et d'associations
112
#cteurs
UML nemploi pas le terme dutilisateur mais
dacteur.
Le terme acteur ne dsigne pas seulement
des utilisateurs humains mais galement les
autres systmes (machines, programmes, .)
Un acteur est un rle jou par une entit
externe qui agit sur le systme (Comptabilit,
service commercial, .), en changeant de
linformation (en entre et en sortie)
113
#cteurs
Remarques
La mme personne physique peut jouer le
rle de plusieurs acteurs (Chef dagence est
un client de la banque).
Dautres part, plusieurs personnes peuvent
jouer le mme rle, et donc agir comme un
mme acteur (plusieurs personnes peuvent
jouer le rle dadministrateur).
114
#cteurs
Peut tre reprsent de deux manires
diffrentes :
Petit personnage (stick man)
Classe strotype
Nom Acteur
KK)cteurLL
?o! )cteur
115
#cteurs
Les acteurs peuvent tre de trois types :
Humains : utilisateurs du logiciel travers
son interface graphique, par exemple.
Logiciels : disponibles qui communiquent
avec le systme grce une interface
logicielle (AP, ODBC, .)
Matriels : exploitant les donnes du systme
ou qui sont pilots par le systme
(mprimante, robots, automates, .)
11"
#cteurs
Secrtai re
Etudi ant
'9stM!e de Aestion
'colaire
<<acteur>>
mpri mante
<<acteur>>
Site Web de l 'tabl i ssement
11$
#cteurs
Mais du point de vue systme on distingue
deux types :
Acteurs principaux : utilisent les fonctions
principales du systme. Par exemple, le
client pour un distributeur de billets.
Acteurs secondaires : effectuent des tches
administratives ou de maintenance. Par
exemple, la personne qui recharge la caisse
contenue dans le distributeur.
11&
#cteurs
Un acteur peut tre une
spcialisation d'un autre
acteur dj dfini.
Dans ce cas, on utilise la
relation de
gnralisation/spcialisation.
Acteur gnral
Acteur spci al i s
11*
Cas d:utilisation
ntroduit par var Jacobson en 1992 dans sa
mthode Object-Oriented Software
Engineering (OOSE).
Technique de description du systme tudi
privilgiant le point de vue de l'utilisateur.
Repris par UML dans la but de :
Effectuer une bonne dlimitation du systme
Amliorer la comprhension de son
fonctionnement interne
12+
Cas d:utilisation
Les cas dutilisations
Permettent de modliser les attentes (besoins) des
utilisateurs
Reprsentent les fonctionnalits du systme
Suite dvnements, initie par des acteurs, qui
correspond une utilisation particulire du systme
Limage dune fonctionnalit du systme,
dclenche en rponse la stimulation dun acteur
externe.
121
Cas d:utilisation
Un cas d'utilisation est reprsent par une
ellipse en trait plein, contenant son nom.
Nom Cas Uti l i sati on
122
'tructuration des cas d:utilisation
Aprs avoir identifi les acteurs et les cas
d'utilisation, il est utile de restructurer
l'ensemble des cas d'utilisation que l'on a fait
apparatre afin de rechercher les :
Comportements partags
Cas particuliers, exceptions, variantes
Gnralisations/spcialisations.
123
'tructuration des cas d:utilisation
UML dfinit trois types de relations
standardises entre cas d'utilisation :
Une relation d'inclusion, formalise par la
dpendance include
Une relation d'extension, formalise par la
dpendance extend
Une relation de gnralisation/spcialisation
124
/elation d:inclusion
Lors de la description des cas d'utilisation, il
apparat qu'il existe des sous-ensembles
communs plusieurs cas d'utilisation, il
convient donc de factoriser ces
fonctionnalits en crant de nouveaux cas
d'utilisation qui sont utiliss par les cas
d'utilisation qui les avaient en commun.
125
/elation d:inclusion
A inclut B : le cas A inclut obligatoirement le
comportement dfinit par le cas B; permet de
factoriser des fonctionnalits partages
Le cas d'utilisation point par la flche (dans
notre cas B) est une sous partie de l'autre
cas d'utilisation (A, dans notre exemple).
<<i ncl ude>>
A
B
12"
/elation d:inclusion
<<i ncl ude>>
<<i ncl ude>>
<<i ncl ude>>
<<i ncl ude>>
Reti rer de l 'argent
Dposer de l 'argent
Effectuer des vi rements
Consul ter sol de
S'authenti fi er
Les cas d'utilisation "Dposer de
l'argent", "Retirer de l'argent",
"Effectuer des virements" et "Consulter
solde" incorporent de faon explicite le
cas d'utilisation "S'authentifier", un
endroit spcifi dans leurs
enchanements.
12$
/elation d:inclusion
On utilise cette relation pour viter de dcrire
plusieurs fois un mme enchanement
d'actions. Ainsi, on est amen factoriser un
comportement commun plusieurs cas
d'utilisation dans un cas d'utilisation part.
12&
/elation d:inclusion
Remarques
La relation include na pour seul objectif que de
factoriser une partie de la description dun cas
dutilisation qui serait commune dautres cas
dutilisation.
Le cas dutilisation inclus dans les autres cas
dutilisation nest pas proprement parl un vrai cas
dutilisation car il na pas dacteur dclencheur ou
receveur dvnement. l est juste un artifice pour
faire de la rutilisation dune portion de texte.
12*
/elation d:inclusion
Rsum
Une instance du cas source inclut
obligatoirement le comportement dcrit par le
cas dutilisation destination
Permet de dcomposer des comportements
et de dfinir les comportements partages
entre plusieurs cas dutilisation
~> Factoriser
13+
/elation d:e9tension
La relation strotype extend permet
d'tendre les interactions et donc les
fonctions dcrites dans les cas d'utilisation,
mais sous certaines contraintes.
131
/elation d:e9tension
Le CU source (B) ajoute, sous certaines conditions,
son comportement au CU destination (A)
En dautres termes, le CU B peut tre appel au
cours de lexcution du CU A
Le comportement ajout sinsre au niveau dun
point dextension dfinit dans le CU destination
<<extend>>
B
A
Poi nt d'i nserti on
132
/elation d:e9tension
Le cas d'utilisation de destination peut
fonctionner tout seul, mais il peut galement
tre complt par un autre cas d'utilisation,
sous certaines conditions.
On utilise principalement cette relation pour
sparer le comportement optionnel (les
variantes) du comportement obligatoire.
133
/elation d:e9tension
Exemple :
Au moment de l'authentification, il se peut que
le guichet retient la carte.
<<extend>>
Reteni r l a carte
S'authenti fi er
134
/elations dinclusion 6' d:e9tension
La relation extend" montre une possibilit
d'excution d'interactions qui augmenteront
les fonctionnalits du cas tendu, mais de
faon optionnelle, non obligatoire,
La relation "include" suppose une obligation
d'excution des interactions dans le cas de
base.
135
/elation d:<ritage
l peut galement exister une relation
d'hritage entre cas d'utilisation.
Cette relation exprime une relation de
spcialisation/gnralisation au sens
classique.
13"
/elation d:<ritage I 89e.(le
Dans un systme d'agence de voyage, un acteur
"Touriste" peut participer un cas d'utilisation
de base qui est "Rserver voyage", qui
suppose par exemple, des interactions
basiques au comptoir de l'agence. Une
rservation peut tre ralise par tlphone ou
par nternet.
13$
/elation d:<ritage I 89e.(le
On voit qu'il ne s'agit pas d'une relation "extend", car
la rservation par nternet n'tend pas les interactions
ni les fonctionnalits du cas d'utilisation "Rserver
voyage".
Les deux cas d'utilisation "Rservation voyage" et
"Rserver voyage par nternet" sont lis : la
rservation par nternet est un cas particulier de
rservation.
De faon gnrale en objet, une situation de cas
particulier se traduit par une relation de
gnralisation/spcialisation.
13&
/elation d:<ritage I 89e.(le
Reserver voyage
Rserver voyage par tl phone
Rserver voyage par nternet
13*
'tructuration entre cas dutilisation
Rsum
Les cas peuvent tre structures par des relations :
A inclut B : le cas A inclut obligatoirement le
comportement dfinit par le cas B; permet de
factoriser des fonctionnalits partages
A tend B : le cas A est une extension optionnelle
du cas B un certain point de son excution.
A gnralise B : le cas B est un cas particulier du
cas A.
14+
/elations entre cas dutilisation I
89e.(le
Un client peut effectuer un retrait 2ancaire. Le
retrait peut tre effectu sur place ou par
Jnternet. Le client doit Ntre identifi (en
fournissant son code daccs) pour effectuer
un retrait, mais si le !ontant dpasse
500$O, la 6rification du solde de son
co!pte est ralise.
141
/elations entre cas dutilisation
<<i ncl ude>>
<<extend>>
Vi rement
Vi rement par nternet
Vi rement sur pl ace
denti fi cati on
Vri fi cati on sol de compte
Cl i ent di stant
Cl i ent l ocal
Montant > 500 DH
142
1escri(tion des cas dutilisation
Le diagramme de cas dutilisation dcrit les
grandes fonctions dun systme du point de
vue des acteurs.
Mais il nexpose pas de faon dtaille le
dialogue entre les acteurs et les cas
dutilisation.
ncessit de dcrire ce dialogue
143
1escri(tion des cas dutilisation
Deux faons sont couramment utilises pour
dcrire les cas dutilisation :
Description textuelle
Description laide dun diagramme de
squence (voir chapitre suivant)
144
1escri(tion des cas dutilisation
(descri(tion te9tuelle!
dentification
Nom du cas : retrait dargent
Objectif : dtaille les tapes permettant un
guichetier deffectuer des oprations de retrait par
un client
Acteurs : Guichetier (Principal), Systme central
(Secondaire)
145
1escri(tion des cas dutilisation
(descri(tion te9tuelle!
Scnarios
Scnario nominal
1. Le Guichetier saisit le numro de compte client
2. Lapplication valide le compte auprs du SC
3. Lapplication demande le type dopration au Guichetier
4. Le Guichetier slectionne un retrait de 200 DH
5. Le systme interroge le SC pour sassurer que le compte
est suffisamment approvisionn.
6. Le SC effectue le dbit du compte
7. Le systme notifie au guichetier quil peut dlivrer le
montant demand
14"
1escri(tion des cas dutilisation
(descri(tion te9tuelle!
Scnarios
Scnario alternatif (exception)
1. En (5) : si le compte nest pas suffisamment
approvisionn ..
14$
1escri(tion des cas dutilisation
(descri(tion (ar diagra..e de s3uence!
'aisie du nu!ro de co!pte client
$e!ande de 6alidit de co!pte
#P
$e!ande t9pe opration
Qetrait>so!!e0
+o!pte suffisa!!ent appro6iosionn
$2iter le co!pte
+o!pte d2it
)utorisation de dli6rer so!!e
7rfification
Guichetier Systme Central
Systme
14&
7ntrJts des cas dutilisation
Les CU obligent les utilisateurs :
Dfinir la manire dont ils voudraient interagir
avec le systme
Prciser quelles informations ils entendent
changer avec le systme
Dcrire ce qui doit tre fait pour obtenir le
rsultat escompt
14*
1iagra..e des cas d:utilisation
Le diagramme des cas d'utilisation regroupe dans
un mme schma les acteurs et les cas d'utilisation
en les reliant par des relations. Le systme tant
dlimit par un cadre rectangulaire.
La reprsentation de base d'un cas d'utilisation est
une ellipse contenant le nom du cas. L'interaction
entre un acteur et un cas d'utilisation se reprsente
comme une association. Elle peut comporter des
multiplicits comme toute association entre classes.
15+
1iagra..e des cas d:utilisation
<<i ncl ude>>
<<i ncl ude>>
<<i ncl ude>>
<<i ncl ude>>
<<extend>>
Cl i ent
Agent
Techni ci en
Dposer de l 'argent
Reti rer de l 'argent
Consul ter l e sol de
Effectuer des vi rements entre comptes
Ravi tai l l er
Rparer
S'authenti fi er
Reteni r l a carte
Fourni r un l ogi n et un mot
de passe
151
Kta(es de construction du diagra..e
des cas d:utilisation
Pour modliser le diagramme des cas d'utilisation, il faut :
dentifier les acteurs qui entourent le systme. Certains acteurs
utilisent le systme pour accomplir des tches (acteurs
principaux), d'autres effectuent des tches de maintenance ou
d'administration (acteurs secondaires).
Organiser les acteurs selon une hirarchisation de
gnralisation/spcialisation
ntgrer les acteurs au diagramme en spcifiant les cas
d'utilisation auxquels ils se rapportent
Structurer les cas d'utilisation pour faire apparatre les
comportement partags (relation d'inclusion), les cas particuliers
(gnralisation/spcialisation) ou options (relation d'extension)
152
UML
Diagrammes de squences
153
1iagra..e de s3uences
Reprsenter les interactions entre objets en
prcisant la chronologie des changes de
messages
Reprsente une instance dun cas dutilisation (les
scnarios possible dun cas dutilisation donn)
Montre sous forme de scnarios, la chronologie des
envoies de messages issus dun cas dutilisation
Le diagramme de squence fait ressortir :
Les acteurs
Les objets
Les messages
154
1iagra..e de s3uences
Message_1
Message_2
Obj et_1 Obj et_2 Obj et_3
Li gne de vi e de
l 'obj et
155
1iagra..e de s3uences
Un objet est reprsent par un rectangle et
une ligne verticale (ligne de vie de lobjet)
Les objets communiquent en changeant des
messages reprsents par des flches
orientes de lmetteur au rcepteur
Lordonnancement verticale des messages
indique la chronologie
15"
1iagra..e de s3uences
Un message reu par un objet dclenche
lexcution dun opration
Un message envoy par objet correspond :
Demander un service dun autre objet
Renvoyer le rsultat dun opration
15$
1iagra..e de s3uences I 89e.(le
Compte
-
-
NCompte
Sol de
: Stri ng
: fl oat
+
+
+
+
<<Constructor>> Compte (i nt n, fl oat s)
dposer (fl oat somme)
reti rer (fl oat somme)
consul ter ()
: voi d
: fl oat
: fl oat
Le client demande un service (dposer de largent) lobjet Compte
Le compte reoit le message et dclenche lopration de mme nom
Le compte retourne le rsultat (le solde actuel)
15&
1iagra..e de s3uences
Plusieurs concepts additionnels :
Priode dactivit
Types de messages
Cration et destruction dobjets
Structures de contrles
15*
?riode dactivit
Correspond au temps pendant lequel un
objet fait une action
Reprsente par une bande rectangulaire
superpose la ligne de vie de lobjet
Message_1
Obj et_1 Obj et_2
1"+
Messages
Traduisent les interactions (change
dinformations) entre objets
Reprsents par des flches orientes de
lmetteur au rcepteur
Plusieurs types :
Message simple
Message minut (Timeout)
Message synchrone
Message asynchrone
Message rcursif
1"1
Message si.(le
Message pour lequel on ne spcifie aucune
information denvoi ou de rception
Message_1
Obj et_1 Obj et_2
1"2
Message .inut ([Link]!
Bloque lexpditeur pendant un temps donn,
en attendant la prise en compte du message
par le rcepteur
Aprs le dlai, lexpditeur est libr et peut
envoyer
Message_1 (20 secondes)
Obj et_1 Obj et_2
1"3
Message .inut ([Link]! I
89e.(le
La porte dun ascenseur souvre pendant un
certain dlai avant dtre referme.
ouvri r (2 secondes)
fermer
Ascenseur Porte
1"4
Message sync<rone (a((el de (rocdure!
Bloque lexpditeur jusqu la prise en
compte du message par le rcepteur
Le contrle est pass de lmetteur au
rcepteur qui devient son tour metteur
(actif)
Message_1
Obj et_1 Obj et_2
1"5
Message sync<rone (a((el de (rocdure!
I 89e.(le
Communication client serveur : Sockets
Sol l i tati on
Acceptati on
Requte
Rponse
Cl i ent Serveur
1""
Message async<rone
Ninterrompt pas lexcution de lexpditeur
Lexpditeur peut mettre sans attendre la
rponse du rcepteur
Message_1
Obj et_1 Obj et_2
1"$
Message rcursi)
Appel aussi message rflexive
Message envoy dun objet vers lui-mme.
Message_1
Obj et_1
1"&
Message rcursi) I 89e.(le
Lorsque le client introduit sa carte de guichet,
ce dernier vrifie la validit de la carte avant
de demander le code daccs
ntrodui re carte
Vri fi cati on val i di t
Demande code accs
Cl i ent GAB
1"*
Cration et destruction do%-ets
Un message peut crer ou dtruire un objet
Message_1
Message_2
Obj et_1
Obj et_2
Obj et_3
Cration dobjet
Destruction dobjet
Objet cr au cours de lexcution du scnario
Objet dtruit dans un scnario
1$+
0raduction des .essages
Envoyer un message cest demander un
service dun autre objet (sauf le cas dun
message de retour).
Les messages sont traduits par des
oprations dans la classe de lobjet ayant
reu le message
1$1
0raduction des .essages
class 7oiture
class 7oiture{
Public void demarrer(){}
}
class +onducteurB
class +onducteurB
private Voiture voiture;
public void conduire(){
[Link]();
}
}
R
R
!ain>'tring:< arg0B
!ain>'tring:< arg0B
[Link]();
}
1$2
'tructures de contrAle
Le diagramme de squences peut inclure un
certain nombre de structures
Branchements (tests)
Rptitions (itrations, boucles)
1$3
Les test (%ranc<[Link]!
La condition prcde le message et elle est
dlimite par des crochets
[condi ti on]: Message
Obj et_1 Obj et_2 Obj et_3
1$4
Les test (%ranc<[Link]! I 89e.(le
Pour accder au centre de recherche, lutilisateur
doit prsenter son badge. Sil a droit daccs, un
voyant vert est allum et la porte souvre
Prsente son badge
[OK]voyant vert
Vri fi er droi t d'accs
ouvri r porte
Uti l i steur Systme
1$5
Les %oucles (r(titions!
La boucle se note comme le test, mais la
condition est prcde dun astrisque
[condi ti on]: Message
Obj et_1 Obj et_2 Obj et_3
*
1$"
[Link]
Permet de dcomposer une interaction
complexe en fragments simples
Reprsent par un rectangle dont le coin
suprieur gauche contient un pentagone
Dans le pentagone figure le type du fragment
loop : boucle
alt : alternative
ref : rfrence
.
1$$
[Link]
Tant que x>0 faire
Si x>0 alors
Si x<0 alors
1$&
UML
Diagrammes de collaboration
1$*
1iagra..e de colla%oration
Reprsente les interactions entre objets et
relations structurelles permettant celles-ci.
Permettent la description:
Du comportement collectif dun ensemble dobjets
Des connexions entre ces objets
Des messages changs par les objets
nteraction ralise par un groupe dobjets
qui collaborent en changeant des messages
1&+
1iagra..es de colla%oration
Reprsentation graphique de lvolution dun
ensemble dobjets pour effectuer une action
Diffrences avec diagrammes de squence
pas daxe temporel
temps modlis par numrotation
1&1
1iagra..es de colla%oration
lments dune interaction
Instances
qui collaborent avec d'autres objets en changeant des
informations
Reprsents par
liens
qui sont des supports de messages
Reprsents comme des associations
messages
dclenchant les oprations
ndiqus par des flches
:Cl asse Obj et:Cl asse
1&2
1iagra..es de colla%oration
Exemple : Appel tlphonique
I#((elant
ILigne I#((el
1L 1croc<er
2L 0onalit
3L [Link]
4L1aL 0onalit sonnerie
"L1aL #rrJt tonalit
4L1%L 'onnerie
5L 1croc<er
"L1%L #rrJt sonnerie
1&3
1iagra..es de colla%oration
Aspect temporel
modlis par numrotation des messages
Type et Smantique des numrotations
1, 2, 3, 4 : ?u!rotation si!ple
s5uence!ent des messages
1, 1.1, 1.2, 1.2.1, 1.2.2, 1.2.3 : $ot notation
squencement + un point : ne peut tre termin que si ses
sous points le sont aussi
1, 1.1a, 1.1b, 1.2, 1.3 : $ot notation E concurrence
idem dot notation, mais les points 1.1a et 1.1b peuvent tre
effectus en parallle
1&4
1iagra..es de colla%oration
Mmes types contraintes que pour les
diagrammes de squence
tration : *[condition]
Conditions : [condition]
Exemple : rservation darticles
I'toc@ I6endeur
2L vri)ier(n; ite.!
3L Mdis(oni%leNrserver(n; ite.!
IClient
1L co..ander(n; ite.!
4L livrer(n; ite.!
1&5
1iagra..es de colla%oration
Les o2jets cres ou dtruits au cours dune
interaction peuvent respecti6e!ent porter
les contraintes :
{Nouveau}
{Dtruit}
<<{Dtrui t}>>
Obj et_1
<<{Nouveau}>>
Obj et_2
1&"
1iagra..es de colla%oration
Conclusion
Reprsentation spatiale
Aspect temporel plus difficile suivre que pour les
Diagramme de squence
Dure dexcution dune contrainte difficile valuer
Diagramme niveau instance
Limite : taille des diagrammes
Plus dinstances peuvent tre reprsentes sur un mme
diagramme que pour les diagrammes de squence
1&$
89e.(le I #scenseur ('3uence!
1&&
89e.(le I #scenseur (Colla%oration!
1&*
UML
Diagramme tat-transition
1*+
1iagra..e tatFtransition
Le diagramme tat-transition :
Fait partie des modles dynamiques
Dcrit l'enchanement de tous les tats d'un
objet
Propre une classe donne. l dcrit :
Les tats des objets de cette classe
Les vnements auxquels ils ragissent
Les transitions qu'ils effectuent
1*1
1iagra..e tatFtransition
Le diagramme tat-transition manipule
plusieurs concepts :
tat
Transition
vnement
Garde
.
1*2
Ktat
L'tat d'un objet est dfini par l'ensemble des
valeurs de ses attributs (fentre affiche,
fentre cache, .)
Un tat dpend de l'tat prcdent et de
l'vnement survenu
Un tat est reprsent par un rectangle aux
coins arrondis
Affi che
Fentre
-
-
D
Vi si bl e
: i nt
: bool ean = True
1*3
0ransition
C'est le passage d'un tat un autre
Peut tre nomm par un vnement
Reprsent par une flche oriente de l'tat
source vers l'tat cible
Rdui re
Restaure
Rdui te
1*4
[Link]
Fait (externe) survenu qui dclenche une
transition (changement d'tats)
Peut tre rflexif et conduire au mme tat
Conduit l'appel d'une mthode de la classe
de l'objet
Peut possder des attributs :
paramtres ports par des vnements
Reprsents entre parenthses
89e.(le
1*5
Soit le diagramme dtats/transitions de lobjet 'Fentre
1*"
Gardiens
Conditions ou fonctions boolennes
associes une transition
Une transition garde ne peut tre effectue
que si le gardien est vrifi
Un gardien est reprsent entre crochets
Evnement [Condi ti on]
Etat1
Etat2
1*$
[Link].e et e9e.(le
Evnement [Condi ti on]
Etat1
Etat2
Pri se foncti on [Date embauche chue]
Empl oy recrut
Empl oy en acti vi t
1*&
#ctions et activits
Un objet qui reoit un vnement dclenche
une ou plusieurs oprations
On distingue deux types d'oprations :
Action : associe un tat ou une transition
Activit : associe un tat
1**
#ctivit
Opration d'une certaine dure, qui est
excute tant que lobjet se trouve dans ltat
Associe un tat d'un objet
Reprsente dans l'tat prcde par la
notation "do/"
2++
#ction
Opration instantane non interrompue
Peut tre associe aussi bien l'tat d'un
objet qu'a une transition
Elle peut intervenir soit
En entre de l'tat (prfixe : "entry/")
En sortie de l'tat (prfixe : "exit/")
En rponse un vnement (prfixe :"evt/")
Au cours d'une transition (prfixe : "evt/")
2+1
[Link].e et e9e.(le
Evnement [Cond]/ Acti on
Etat_1
entry / Acti on_1
do / Acti on_2
Evnement() / Acti on_3
exi t / Acti on_4
Etat 2
entry / Act1
do / Act2
Evnement() / Act3
exi t / Act4
Embauch
entry / Si gner contrat
do / Assurer foncti on
Arri ve proposi ti on() / Rponde l a proposi ti on
Mutati on() / Changer d'affectati on
exi t / Rompre contrat de travai l
2+2
89ercice
Modliser ltat de saisie dun mot de passe :
Au dbut, la zone de saisie est masque
chaque saisie dun caractre, il stock
La touche F1 permet dafficher laide
Le bouton dannuler permet de fermer la
fentre
la fin de la saisie (validation) le mot de
passe est test (valide ou invalide)
2+3
Ktat initial et tats )inau9
Un diagramme tat-transition
Dbute toujours par un tat initial
Se termine par un ou plusieurs tats finaux (sauf
o le diagramme reprsente une boucle)
Etat_1
Etat_2
2+4
89e.(le (eu de signalisation!
Vert
Orange
Rouge
Feu
-
-
D
Coul eur
: i nt
: {Vert, Orange, Rouge}
2+5
?oint de dcision
Permettent de reprsenter des partages de
transitions ou des alternatives pour le
franchissement dune transition
On utilise deux mcanismes :
Points de jonction (petit cercle plein) : pour
partager des segments de transition
Points de choix (losange) : pour choisir une ou
une autre transition
2+"
?oint de -onction
?oints de c<oi9
2+$
2+&
Ktat co.(osite
Un tat composite (#tat simple) est
dcompos en deux ou plusieurs sous tats
Cette dcomposition est rcursive
Un tat composite est reprsent comme un
tat simple, sauf que les sous tats sont
contenus dans le compartiment infrieur.
2+*
89e.(le
21+
2istori3ue
On reprsente le pseudo tat historique par
un H cercl
Une transition ayant pour cible ltat
historique est quivalente une transition
ayant pour cible le dernier tat visit dans la
rgion contenant le H
H* (historique profond) est un tat valable
pour tous les niveaux
Concurrences
Pour reprsenter la concurrences dans un
diagramme dtats/transitions, on utilise :
tats concurrents
Transitions concurrentes
211
212
Ktats concurrents
tat composite pour reprsenter lexcution
de plusieurs automates sexcutant
indpendamment
On utilise un sparateur en pointills
Lobjet peut tre simultanment dans
plusieurs tats concurrents
213
Ktats concurrents
214
0ransitions concurrentes
Deux transitions particulires : fork et join
La transition fork correspond la cration de
deux tats concurrents
La transition join permet de supprimer la
concurrences (barre de synchronisation)
Pour pouvoir franchir la barre de
synchronisation, toutes les tches
concurrentes doivent tre acheves
215
0ransitions concurrentes
21"
UML
Diagramme d'activits
21$
7ntroduction
Variante des diagrammes d'tat-transition
Permet de dcrire le flot de contrle entre les
oprations :
Choix
Squences
trations
Paralllisme
Au niveau macroscopique : dcrit les
enchanements des oprations
Au niveau microscopique : dcrit l'algorithme d'une
action du diagramme d'tats
21&
Conce(ts de %ase
Plusieurs concepts sont manipuls :
tat
Activit
2"an#ition (#34uentielle( alte"nati.e# ou
conditionnelle)
56nch"oni#ation (di#jonction et conjonction#
d$acti.it3#)
7t3"ation
58imlane#
21*
Co.([Link] conditionnel
Appel aussi le branchement
Symbolise une transition entrante garde par
une condition et plusieurs transitions
sortantes mutuellement exclusives
22+
Co.([Link] conditionnel I 89e.(le
[Pri x<=Somme di sponi bl e]
[El se]
Demander l 'addi ti on
Rgl er l a note
Fai re l a vai ssel l e
221
'ync<ronisation
Fusion (conjonction) : plusieurs transitions
entrantes et une seule sortante
Comportement parallle :
La barre de synchronisation permet d'ouvrir et de
fermer les branches parallles au sein d'un flot
d'excution
Les transitions partantes d'une barre ont lieu en
mme temps
La barre n'est franchie qu'aprs ralisation de
toutes les transitions qui s'y rattachent
222
'ync<ronisation I 89e.(le
Barre de synchronisation
Fusion (conjonction)
Dserrer l e frei n mai n
Appuyer sur l 'embrayage
Encl encher l a 1re vi tesse
Rel cher l 'embrayage
Comportement parallle
Disjonction
223
7tration I 89e.(le
[s'il reste des arti cl es]
[pl us d'arti cl e]
Recevoi r commande
Vri fi er arti cl e
Commander arti cl e
224
'[Link]
Extension des diagrammes d'activits
permettant de reprsenter l'organisation.
Reprsente le lieu, le responsable des
activits.
225
/su. notation
22"
89e.(le rca(itulati)
22$
89e.(le rca(itulati)
[El se]
[El se]
[Val i de]
[Di sponi bl e]
Rcepti on commande
Vri fi er carte crdi t
Annul er commande
Vri fi er di sponi bi l i t produi t
Prparer commande
Dbi ter carte crdi t
Expdi er commande Poster facture
22&
&'ercice (
Reprsenter les tats suivants sous forme de
diagramme d'activit :
Vrification commande
Enregistrement commande
Rejet commande
nformer erreur au client
22*
&'ercice ( ) solution
[oui ] [non]
Vri fi er commande
Enregi strement commande Rej et commande
nformer erreur au cl i ent
Val i de
23+
&'ercice *
Dans le domaine de gestion de stock, on
considre les tats suivants indiquant le flot
de contrle de rception d'une livraison :
Rception livraison, contrle qualit, contrle
quantit et enregistrement livraison.
Proposez un diagramme d'activit reprsentant
ce flot d'information
231
&'ercice * ) solution
232
&'ercice +
Construire un diagramme dactivit pour
modliser le processus de commander dun
produit. Le processus concerne les acteurs
suivants:
+o!pta2le : enregistrement commande,
envoie la facture et enregistrement paiement
du client
+lient : paiement de la facture
233
&'ercice + ) solution
234
&'ercice ,
Construire un diagramme dactivit pour modliser le
processus de commander dun produit. Le
processus concerne les acteurs suivants:
+lient: qui commande un produit et qui paie la
facture
+aisse: qui encaisse largent du client
7ente: qui soccupe de traiter et de facturer la
commande du client
(ntrepSt: qui est responsable de sortir les articles
et dexpdier la commande.
235
&'ercice , ) solution
23"
UML
Diagrammes de Composants et de
Dploiement
23$
1iag de Co.(osantsC 1([Link]
Permettent de modliser les aspects physiques
dun systme orient-objet
Diagramme de Composants : se focalise sur
lorganisation et les dpendances entre un
ensemble de composants
Diagrammes de Dploiement : se focalise
sur la configuration en temps d'excution des
nouds de traitement et de composants qui
sont actifs
23&
1iagra..e de co.(osants
Dans le monde de btiment, tout ce qui est
propos par larchitecte (plan) constitue une
vue logique : visualiser, spcifier,
documenter
Lors de la construction, on utilise des
composants physiques du monde rel : murs,
fentres, portes, .
23*
1iagra..e de co.(osants
De mme, tout ce que nous avons vu jusqu
prsent constitue le modle logique :
visualiser, spcifier et documenter la
structure et le comportement des objets
La construction va sappuyer sur les
composants du monde rel de lordinateur :
fichiers, tables, librairies, .
24+
1iagra..e de co.(osants
Permet de dcrire l'architecture physique et statique d'une
application en terme de composants :
code source,
bibliothques,
excutables,
l montre la mise en oeuvre physique des modles de la vue
logique dans l'environnement de dveloppement
Permet de spcifier :
Composants
nterfaces
Relations (dpendance, gnralisation, association, ralisation).
241
Co.(osant
Un composant est une partie physique et
remplaable dun systme qui sait faire et
fournit la ralisation dun ensemble
dinterface
Les composants peuvent tre organiss en
paquetages
242
Co.(osant
?o! du co!posant :
Permet de distinguer un composant des autres composants
l peut tre un nom simple ou un nom compos qui indique le paquetage
auquel appartient le composant
'trot9pes : spcifient un composant qui dsigne:
e9ecutable : un programme pouvant sexcuter sur un noud
lib"a"6 : une bibliothque statique ou dynamique
table : une table de base de donnes
file : un fichier contenant du code source ou des donnes
document : un document
+o!ponent1
Nom du composant
243
Conce(ts
Jnterface :
Est une collection doprations utilises pour
spcifier les services dune classe ou dun
composant
Qelations a6ec les interfaces
Qalisation :
Dfinie entre linterface et le composant qui fournit les
services pour les autres composants
Cette interface est appele inte"face e9:o"t3e
$pendance :
Dfinie entre linterface et le composant qui utilise les
services fournis par un autre composant
Cette interface est appele inte"face im:o"t3e .
244
7nter)ace
+o!ponent2 +o!ponent1
Jnterface1
+o!ponent2
+o!ponent1
Attributs
T Jnterface U
Jnterface1
Oprations
dpendance
ralisation
245
$elations entre les comosants
$pendance :
Cela signifie quun des lments dun composant
a besoin des services que les lment de lautre
composant ralisent
Notation UML
+o!ponent1 +o!ponent2
24"
$elations entre les comosants
+ontenance :
Un composant peut tre contenu dans un autre
composant
Notation UML
+o!ponent 1
+o!ponent 2 +o!ponent 2
24$
'yst.e 6ente
(diagra..e de classes!
utilise
.igne de 6ente
F3uantit I integer
Pset4uantit(7n 3uantitIinteger!
7ente
F1ate I unde)ined
F2eure I unde)ined
Pinitier?[Link](7n .ontantIreal!
%agasin
Pno. I string
Padresse I string
Paie!ent
[Link] I real
[Link] I string
contenu dans
1LLQ
1
1 Q
enregistre
est paye par
1
1
1
Catalogue
P,%tenir'(ec(7n [Link])ined!I'(ci)ication?roduit
[Link]
F1escri(tion I string
F?ri9 I real
Pget1escrit(tion(7n [Link])ined!Istring
Pget?ri9(7n [Link])ined!Ireal
1
1LLQ
Q
Contient
24&
1iagra..e de co.(osants
(89e.(le!
Systme Vente
RRe9ecuta%leSS
72MTCaisier
RRutilitySS
Catalogue?roduits
RRe9ecuta%leSS
[Link]?roduits
RRinter)aceSS
7nter)ace?roduit
7nter)aceCatalogue
RRe9ecuta%leSS
Gestion d:autorisation
7nter)ace#utorisation
RRe9ecuta%leSS
Gestion?[Link]
7nter)ace?[Link]
RRli%rarySS
Uava'Oing
Gestion d:7.(Ats
7nter)ace7.(Ats
24*
1iagra..e de d([Link]
Montre la configuration des nouds de excution et
des composants quy rsident
Montre les relations physiques entre les
composants logiciels et matriels dun systme
Permet de spcifier
Nouds
Relations : (dpendance, associations)
25+
#/ud
Est un lment physique qui existe pendant
lexcution et reprsente une ressource
informatique dans la plupart de cas il sagit dun
lment matriel
En gnral un noud possde sa propre mmoire
et une capacit de traitement
Lensemble de composants qui est associ aux
nouds est appel unit3 de "3:a"tition
Les nouds prennent en charge lexcution des
composants.
251
BVud
?o! du nVud :
Permet de distinguer un noud des autres nouds
Le nom peut tre compos du nom de paquetage qui contient
le noud
'trot9pes : un noud peut possder un strotype qui permet de
le distinguer des autres types de ressources (permettant de
spcifier le types de ressources)
/0U : une unit de calcul
memo"6 : une unit de stockage
[Link] : un dispositif tel quun capteur
?Vud 1
Nom du noud
252
/elations entre nVuds et co.(osants
$pendance :
Montre la capacit dun noud de supporter un composant
Peut tre galement exprime entre les composants rsidant dans un
mme noud
Notation UML
?Vud 1
+o!posant 2
+o!posant1
Client
01M 01M
253
/elations entre deu9 nVuds
Association
ndiquent une voie physique entre deux nouds
Exemple:
Une connexion Ethernet
Un bus de communication
Notation UML
?Vud 1 ?Vud 2
TCP / IP
(
(223
254
1iagra..e de d([Link]
(89e.(le!
Systme Vente
'erveur de Calcul
7nter)ace#utorisation 7nter)ace7.(Ats
7nter)ace?[Link]
RRe9ecuta%leSS
Gestion d:autorisation
RRe9ecuta%leSS
[Link]?roduits
RRe9ecuta%leSS
Gestion?[Link]
Gestion d:7.(Ats
6entes
RRe9ecuta%leSS
72MTCaisier
RRli%rarySS
Uava'Oing
'erveur de 1onnes
7nter)aceCatalogue
RRutilitySS
Catalogue?roduits
LAN
1
1LLQ
LAN
1
1
255
1iagra..e de d([Link]
4ase de Donnes
Client
01M 01M
TCP / IP
(
(223
Ser5eur
6rdonnanceur
77utilit899
4ase de
Donnes
interface
25"
1iagra..e de d([Link]
25$
Corres(ondance UML et
Uava
madaniabdellah@[Link]
25&
0raduction dune classe
La classe est le concept fondamental de
toute technologie objet.
Le mot-cl correspondant existe bien sr
galement en Java.
De plus, chaque classe UML devient par
dfaut un fichier .java.
25*
0raduction dune classe
class Personne{
.
.
..
}
Personne
2"+
0raduction dune classe
Une classe a2straite est simplement une
classe qui ne sinstancie pas directement
mais qui reprsente une pure abstraction afin
de factoriser des proprits.
Elle se note avec Ba2stractC en UML et se
traduit par le mot-cl a2stract en Java.
2"1
0raduction dune classe
abstract class Personne{
..
..
..
}
Personne
Ba2stractC
2"2
0raduction dune classe
Une interface est une classe spciale dont
toutes les mthodes sont abstraites
Une interface se note en UML avec le
symbole
En java, elle traduite par le mot cl 'interface
2"3
0raduction dune classe
interface Forme {
.
.
.
}
@or!e
2"4
0raduction des attri%uts
Les attributs UML deviennent simplement
des attributs en Java
Leur type est soit un type primitif (int, etc.),
soit une classe.
La visibilit des attributs est montre
graphiquement en UML en les faisant
prcder par + pour public, # pour protg
(protected), - pour priv (private).
Les attributs de classe en UML deviennent
des membres statiques en Java (static).
2"5
0raduction des o(rations
Les oprations UML deviennent trs
directement des mthodes en Java.
Leur visibilit est dfinie graphiquement avec
les mmes conventions que les attributs.
Les oprations de classe deviennent des
mthodes statiques (static).
Les oprations abstraites (en itali4ue#) se
traduisent par le mot-cl abstract en Java.
2""
0raduction des o(rations
class Personne {
private int code;
private String nom;
private static int nombre;
public Personne() {
}
public static int getNombre(){
}
public String getnf(){
}
}
2"$
0raduction des relations
Les relations UML entre concepts statiques
sont trs riches. On peut distinguer les
relations de :
Gnralisation (hritage)
Ralisation
Association, avec ses variantes : agrgation
et composition.
2"&
0raduction des relations
(La gnralisation!
Le concept UML de gnralisation se traduit
directement par le mcanisme de lhritage
dans les langages objets.
Java, contrairement C++ interdit lhritage
multiple entre classes.
2"*
0raduction des relations
(La gnralisation!
Class Personne{
.
.
.
}
Class Employe extends
Personne{
.
.
.
}
Personne
(!plo9e
2$+
0raduction des relations
(La ralisation !
Une classe UML peut implmenter plusieurs
interfaces.
Contrairement C++, le langage Java
propose directement ce mcanisme.
2$1
0raduction des relations
(/alisation!
interface A{
.
.
}
interface B{
.
.
}
class C implements A, B {
.
.
}
+
)
H
2$2
0raduction des relations
(Les associations!
Les associations navigables UML se
traduisent par du code Java qui dpend de :
la multiplicit de lextrmit concerne (pointe
par la flche)
mais aussi de lexistence ou pas dune contrainte
{ordered} ou dun qualificatif.
Nous allons voir tout cela du plus simple au
plus complexe :
Une association navigable avec une multiplicit 1
Une association navigable avec une multiplicit *
2$3
0raduction des relations
(Les associations!
Une association navigable avec une
multiplicit 1 se traduit par une variable
dinstance de type rfrence vers une
instance de classe.
Une multiplicit * va se traduire par un
attribut de type collection de rfrences
dobjets au lieu dune simple rfrence sur un
objet.
2$4
0raduction des relations
(Les associations!
La difficult consiste choisir la bonne collection
parmi les trs nombreuses classes de base que
propose Java.
Bien quil soit possible de crer des tableaux
dobjets, ce nest pas forcment la bonne solution.
En pratique, on prfre plutt recourir des
collections, parmi lesquelles les plus utilises sont :
A""a6Li#t( 5o"tedLi#t et ;a#h2able.
Utilisez A""a6Li#t si vous devez respecter un ordre et
rcuprer les objets partir dun indice entier
Utilisez ;a#h2able si vous souhaitez rcuprer les objets
partir dune cl arbitraire.
2$5
0raduction des relations
(Les associations!
2$"
0raduction des relations
(Les associations!
Une association bidirectionnelle se traduit
simplement par une paire de rfrences, une
dans chaque classe implique dans
lassociation.
Les noms des rles aux extrmits dune
association servent nommer les variables
de type rfrence.
2$$
0raduction des relations
(Les associations!
2$&
0raduction des relations
(Les associations!
2$*
0raduction des relations
(La classe association!
Elle possde tout la fois les caractristiques
dune association et dune classe et peut
donc porter des attributs qui se valorisent
pour chaque lien.
Ce concept UML avanc nexiste pas dans
les langages de programmation objet, il faut
donc le traduire en le transformant en classe
normale, et en ajoutant des variables de type
rfrence.
2&+
0raduction des relations
(La classe association!
2&1 a%della<[Link]<ooL)r 2&1
UML
De UML vers le modle relationnel
2&2 a%della<[Link]<ooL)r 2&2
1e UML vers le .odle relationnel
Cette partie traite le passage de la
conception faite par UML vers le modle
relationnel
La traduction concerne
Classes, instances, attributs
Relations entres classes :
Associations,
Agrgation,
Composition,
Gnralisation spcialisation
2&3 a%della<[Link]<ooL)r 2&3
Classe en /elationnel
Dans le cas gnral une classe est traduite
par une table
Chaque objet est conserv dans une ligne de
la table
Un champ jouant le rle de cl primaire est
ajout mme s'il n'existait pas dans la classe
2&4 a%della<[Link]<ooL)r 2&4
0raduction d:une classe
(n Qelationnel
Compte(?+o!pte, Solde)
(n 'W.
Create table Compte(
NCompte smallint,
Solde decimal,
Primary key PK_Compte (NCompte)
)
Compte
-
-
NCompte
Sol de
: i nt
: fl oat
+
+
+
+
<<Constructor>> Compte (i nt NCompte, fl oat Sol de)
deposer (fl oat Sol de)
reti rer (fl oat Sol de)
avoi rSol de ()
: voi d
: fl oat
: Stri ng
2&5 a%della<[Link]<ooL)r 2&5
GnralisationCs(cialisation en
/elationnel
Plusieurs mthodes de traduction en
Relationnel :
Reprsenter toutes les classes dune
arborescence dhritage par une seule table
relationnelle
Reprsenter chaque classe par une table
2&" a%della<[Link]<ooL)r 2&"
GnralisationCs(cialisation en
/elationnel
La solution la plus simple est de modliser
toute une hirarchie de classes dans une
mme table
Chaque classe ajoutant ses propres attributs
comme de nouveaux champs.
l nous suffit alors dajouter un champ
contenant le type de linstance pour pouvoir
charger les champs correspondants.
2&$ a%della<[Link]<ooL)r 2&$
GnralisationCs(cialisation en
/elationnel
2&& a%della<[Link]<ooL)r 2&&
#ssociations en /elationnel
(#ssociation unFXFun!
Deux solutions sont possibles :
une cl trangre dans chacune des tables
associes
la fusion des deux tables dans une seule
2&* a%della<[Link]<ooL)r 2&*
#ssociations en /elationnel
(#ssociation unFXFun!
1
re
Solution
Pays(JdPa9s, NomP,#dCapitale)
Capitales(Jd+apitale, NomC, #dPays)
2
ime
Solution
Pays(JdPa9s, NomP, NomC)
2*+ a%della<[Link]<ooL)r 2*+
#ssociations en /elationnel
(#ssociation unFXFun!
1
re
Solution
create table Pays(dPays integer primary key,
.
dCapitale integer foreign key references capitales
(dCapitale))
et
create table Capitales(dCapitale integer primary key,
.,
dPays integer foreign key refernces pays(dPays))
2
ime
Solution
Pays(dPays integer primary key,
NomP varchar(20),
NomC varchar(20))
2*1 a%della<[Link]<ooL)r 2*1
#ssociations en /elationnel
(#ssociation unFXF(lusieurs!
Une seule solution est possible :
migration de la cl du ct de 1 vers la table
du ct de plusieurs
La cl migre jouera le rle de cl trangre
2*2 a%della<[Link]<ooL)r 2*2
#ssociations en /elationnel
(#ssociation unFXF(lusieurs!
En Relationnel
Dept(Jd$ept, Nomdept)
Emp(Jd(!p, NomEmp, #dDept)
En SQL
Create table dept(.)
Create table emp(dEmp integer primary key,
NomEmp varchar(20),
dDept integer foreign key references Dept(dDept)
)
2*3 a%della<[Link]<ooL)r 2*3
#ssociations en /elationnel
(#ssociation (lusieursFXF(lusieurs!
Lassociation est traduite par une table dont
la cl primaire est la concatnation des cls
primaires des tables associes
La table rsultante aura :
Une seule cl primaire
Deux cls trangres
2*4 a%della<[Link]<ooL)r 2*4
0raduction des associations en
/elationnel
(#ssociation (lusieursFXF(lusieurs!
En Relationnel
Articles(Qef, Des, PU)
Commandes(?H+, DateC, Client)
Dtails(#?H+G XQef, Qt)
2*5 a%della<[Link]<ooL)r 2*5
0raduction des associations en
/elationnel
(#ssociation (lusieursFXF(lusieurs! (n 'W.
1. create table Article(Ref integer primary key, .)
2. create table Cde(NBC integer primary key, .)
3. create table Detail(NBC integer, Ref integer,.,
constraint PK primary key(NBC, Ref),
constraint FK1 foreign key(NBC) references cdes(NBC),
Constraint FK1 foreign key(NBC) references cdes(NBC))
2*"
,CL
2*$
Contraintes
Une contrainte est une condition ou une
restriction smantique exprime sous forme
dinstructions dans un langage textuel qui
peut tre naturel ou formel
Elle doit tre applique lors de
limplmentation
Reprsente sous forme dune chane place
entre accolades({})
2*&
Contraintes
Nous avons vu comment exprimer certaines
contraintes avec UML
{ordered}
{subset}
{frozen}
{xor}
.
2**
Contraintes Y 89e.(le F
Dans cet exemple, on exprime le fait quun
'solde doit rester toujours positif (utilisation
dun langage formel).
3++
Contraintes Y 89e.(le F
Dans cet exemple, on exprime un contrainte
avec un langage textuel non formel
3+1
7ntroduction
OCL est un langage de contraintes associ
UML
l peut tre utilis pour contraindre nimporte
quel diagramme
3+2
Conte9te
Une contrainte est toujours associe un lment
du modle
Cet lment constitue le contexte de la contrainte
Deux manires pour exprimer le contexte dune
contrainte :
En crivant la contrainte entre {} dans une note (voir
exemple prcdent)
En utilisant le mot cl 'context dans un document
accompagnant le modle
3+3
Conte9te
Syntaxe
conte8t Kl!entL
O : <lment> : peut tre une classe, un attribut,
une opration, etc.
Pour faire rfrence un lment dune
classe, il faut utiliser les '::
3+4
Conte9te
Le contexte de la classe 'Compte
conte8t +o!pte
Le contexte de lopration getSolde() de la
classe Compte
conte8t +o!pte11get'olde>01Qeal
Le contexte de lopration deposer() de la
classe Compte
conte8t +o!pte11deposer>so!!e1Qeal0
3+5
7nvariants
Un invariant exprime une contraintes sur un
objet ou un groupe dobjets qui doit tre
respecte en permanence
Syntaxe :
in6 1 Ke8pressionYlogi5ueL
Lexpression logique doit tre toujours vraie
3+"
7nvariants
Exemple :
Le solde dun compte doit tre toujours positif
conte8t +o!pte
in6 1 soldeL0
3+$
?rconditions et (ostconditions
Une prcondition permet de spcifier une
condition qui doit tre vrifie avant lappel
dune opration.
Une postcondition permet de spcifier une
condition qui doit tre vrifie aprs lappel
dune opration.
3+&
?rconditions et (ostconditions
Dans lexpression de la contrainte de la
postcondition, deux lments particuliers sont
utiliss :
result : la valeur retourne par lopration
Kattri2utLZpre : la valeur de lattribut avant
lappel de lopration
3+*
?rconditions et (ostconditions
Syntaxe de la prcondition
pre 1 Ke8pression logi5ueL
Syntaxe de la postcondition
post 1 Ke8pression logi5ueL
31+
?rconditions et (ostconditions
Exemples :
conte8t +o!pte11de2iter>so!!e 1 Qeal0
pre 1 so!!eL0
post 1 solde;soldeZpreDso!!e
conte8t +o!pte11get'olde>01Qeal
post 1 result;solde
311
/sultat dune o(ration
Lexpression de contrainte '2od9 permet
dfinir directement le rsultat dune
opration
Syntaxe :
2od9 1 Kre5uNteL
<requte> : expression qui retourne le rsultat
dont le type est compatible avec le type de
retour de lopration
312
/sultat dune o(ration
Exemple
La mthode getSolde() de la classe 'Compte
retourne le solde actuel
conte8t +o!pte11get'olde>01Qeal
2od9 1 solde
313
1)inition des attri%uts et de .t<odes
Motivation :
une sous expression peut tre utilise plusieurs fois dans
une expression
Deux expressions de contraintes :
let : permet de dclarer et dinitialiser un attribut qui peut
tre utilis dans lexpression qui suit le mot cl in
def : fait la mme chose que let.
314
1)inition des attri%uts et de .t<odes
Syntaxes :
let KdclarationL;Kre5uNteL in Ke8pressionL
Lattribut dclar recevra le rsultat de la
<requte> dans toute l<expression>
def 1 KdclarationL;Kre5uNteL
315
1)inition des attri%uts et de .t<odes
Exemples
1/ conte8t Personne
in6 1 let argent;co!pte/soldeDLsu!>0 in
ageL;18 i!plies argentL0
2/ conte8t Personne
def 1 argent 1 Qeal ; co!pte/soldeD
Lsu!>0
3/ conte8t Personne
in6 1 ageL;18 i!plies argentL0
31"
7nitialisation et volution des attri%uts
Le type de contrainte init permet de prciser
la valeur initiale dun attribut ou dune
terminaison dassociation
La valeur dun attribut driv est dfinie par la
contrainte deri6e.
Syntaxes :
init 1 Kre5uNteL
deri6e 1 Kre5uNteL
31$
7nitialisation et volution des attri%uts
Exemple
Quand on cre une personne, la valeur initiale
de lattribut mari est faux, et la personne ne
possde pas demployeur.
conte8t Personne11!ari1Hoolean
init 1 false
conte8t Personne11e!plo9eur1'et>'ocit0
init 1 setBC
31&
7nitialisation et volution des
attri%uts
Exemple
Lge dune personne est la diffrence entre
la date courante et la date de naissance de la
personne.
conte8t Personne11age1Jnteger
deri6e 1 $ate11current>0 [ dateYdeYnaissance
31*
0y(es et o(ration ,CL
Le langage OCL possde un certain nombre de
types prdfinis et doprations prdfinies
sur ces types :
Boolean
nteger
Real
String
32+
0y(es et o(ration ,CL
Type oprateurs
Boolean And, or, xor, not, implies, [Link]
nteger +,-, *, /, abs(), .
Real +,-, *, /, abs(), floor(), .
String Concat(), size(), substring(), .
321
0y(es et o(ration ,CL
a b a and b a or b a xor b a implies b
V V V V F V
V F F V V F
F V F V V V
F F F F F V
322
0y(es et o(ration ,CL
not
V F
F V
f <exp_log0>
Then <exp_log1>
Else <exp_log2>
Endif
323
Collections
Le langage OCL manipule plusieurs
collections :
Set : collection non ordonne dlments uniques
orderedSet : collection ordonne dlments
uniques
Bag : collection non ordonne dlments
Sequence : collection ordonne dlments
324
Collections
Collection lments ordonnes lments uniques
Set Non Oui
OrderedSet Oui Oui
Bag Non Non
Sequence Oui Non
325
4uel3ues o(rations sur les collections
F ,(ration de %ase F
.a s9nta8e 1 collectionDLoperation>0
siIe>0 : nombre dlments
count>0 : nombre doccurrences
su!>0 : somme des lments
is(!pt9>0 : est vide
not(!pt9>0 : non vide
includes>el0 : appartenance
e8cludes>el0 : non appartenance
includes)ll>col0 : inclusion
e8cludes)ll>col0 : exclusion
32"
4uel3ues o(rations sur les collections
F iltrage F
select>cond0 : retient les lments qui vrifient la condition
reject>cond0 : limine les lments qui vrifient la condition
an9>cond0 : retourne lun des lments qui vrifie la
condition
for)ll>cond0 : true si tous les lments vrifient la
condition
e8ists>cond0 : true si au moins un lment vrifie la
condition
is-ni5ue>e8p0 : true si une et une seule valeur de la
collection qui vrifie la condition
32$
,(ration ense.%liste
F 'et ou ,redered'et F
union>ens0 : union
D : diffrence (ens1 ens2)
including>el0 : ajoute un lment
e8cluding>el0 : retire un lment
32&
#ccs au9 donnes de lo%-et courant
Pour faire rfrence une donne (attribut
ou opration) dun objet dsign par le
contexte :
1. Utiliser le nom de llment
2. Faire prcder le nom de llment du mot cl
'self
32*
#ccs au9 donnes de lo%-et courant
Exemple
Dans le contexte de la classe 'Compte :
+onte8t +o!pte
Jn6 1 solde L 0
+onte8t +o!pte11de2iter>so!!e 1 Qeal0
Pre 1 so!!e L 0
Post 1 self/solde ; self/soldeZpre D so!!e
33+
Bavigation X travers une association
Pour faire rfrence un objet (ou un groupe
dobjets) associ via une association, On
utilise :
Le nom de la classe associe en minuscule
Le nom du rle ct de la classe associe
331
Bavigation X travers une association
Dans le contexte de la classe 'Personne, on
fait rfrence la classe socit avec lune
des deux mthodes :
employeur
socit
De mme pour accder ladresse de la
socit :
[Link]
[Link]
332
Bavigation X travers une association
Lutilisation du rle est indispensable si :
1. l existe plusieurs associations entre lobjet
dsign par le contexte et lobjet auquel on
dsire accder
2. Lassociation est rflexive
333
Bavigation X travers une association
Le type du rsultat dpend de :
la multiplicit de lobjet rfrenc
type de lobjet rfrence proprement dit.
Si lobjet rfrenc est T, alors le rsultat est
de type :
T, si la multiplicit est 0..1 ou 1..1
Set(T), si la multiplicit est *
OrderedSet(T), si la multiplicit est * avec
{ordered}
334
Bavigation X travers une association
Exemple : Type du rsultat
335
Bavigation X travers une association
3uali)ie
Dans une association qualifie, on utilise les
valeurs (les instances) des qualificatifs entre
crochets ([])
conte8t Han5ue
in6 1 self/co!pte:8900</soldeL0
33"
Bavigation vers une classe
association
Dans le contexte de Socit, self/poste/salaire:
salaire de tous les employs
Dans le contexte de Personne,
self/!ariage:epouse</date : dates de mariages
des femmes
33$
Bavigation de(uis une classe association
conte8t Poste
in6 1 self/e!plo9e/ageL21
>ou aussiG self/personne/ageL210
33&
#ccs X une .t<ode red)inie
Une sous classe peut redfinir une mthode
de sa classe mre
Laccs la mthode de la classe parente
est toujours possible et se fait par :
ocl)s&9pe>0
33*
#ccs X une .t<ode red)inie
Dans le contexte de B :
'elf/f>0 : accs f() de B
'elf/ocl)s&9pe>f>00 : accs la
mthode de A