Cours UML Kounaidi
Cours UML Kounaidi
Cours UML Kounaidi
Gnie Logiciel
UML
Introduction
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
2
Analyse
Conception
Codage (Implmentation)
Tests
Livraison
Maintenance
Analyse
Conception
Implmentation
Tests
Maintenance
10
11
12
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)
13
14
15
16
17
18
19
20
21
22
23
Historique
Dans le cadre de la modlisation des SI, on
distingue Deux approches
Approche fonctionnelle
Approche objet
Historique
la fin des annes 90, il yavait une prolifration des
mthodes : 1984 1994, le nombre de mthodes OO a pass
de 10 plus de 50 (guerre de mthodes). Chaque mthode
met laccent sur un aspect diffrent (OMT est oriente vers
lanalyse, OOD est plus oriente vers la conception, OOSE
insiste sur la spcification des besoins). Dautre part, chaque
mthode propose ses propres concepts et sa propre notation.
ceci est la source dune grande confusion dune part, et la
difficult de passage dune mthode une autre
Historique
Fin 1994
J. Rumbaugh rejoint G. Booch chez Rational Software
Historique
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
27
28
un travail d'expert
utilise lapproche oriente objet
normalis, riche
Formel : sa notation limite les ambigut et les
incomprhensions
langage ouvert
30
Diagrammes d'UML
UML1.1 comprend 9 de diagrammes :
Diagramme
Est sorte de
Cas
utilisation
Cas
d dutilisation
Collaboration
Composants
Classes
Classes
EtatsTransitions
Transitions
tats
Dploiement
Activit
Squence
Squence
Objets
31
Diagrammes d'UML
UML dfinit deux types de diagrammes, structurels (statiques)
et comportementaux (dynamiques)
Modlisation de la structure (ce que le systme EST)
32
EVOLUE)
33
Diagramme dUML
Les diagramme dUML peuvent tre utiliss pour
reprsenter diffrents points de vues :
Vue externe : vue du systme par ses utilisateurs
finaux
Vue logique statique : structure des objets et leurs
relations
Vue logique dynamique : comportement du systme
Vue dimplmentation : composants logiciels
Vue de dploiement : rpartition des composants
34
UML
Diagrammes de cas
d'utilisation
35
36
Diagramme de cas
d'utilisation
37
38
Acteurs
Acteurs
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).
40
Acteurs
Peut tre reprsent de deux manires
diffrentes :
Classe strotype
<<Acteur>>
Nom Acteur
41
Acteurs
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 (API, ODBC, )
Matriels : exploitant les donnes du systme
ou qui sont pilots par le systme
(Imprimante, robots, automates, )
42
Acteurs
<<acteur>>
Site Web de l'tablissement
Secrtaire
Systme de Gestion
Scolaire
Etudiant
<<acteur>>
Imprimante
43
Acteurs
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.
44
Acteurs
Un acteur peut tre une
spcialisation d'un autre
acteur dj dfini.
Acteur gnral
45
Cas d'utilisation
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.
47
Cas d'utilisation
Un cas d'utilisation est reprsent par une
ellipse en trait plein, contenant son nom.
48
Comportements partags
Cas particuliers, exceptions, variantes
Gnralisations/spcialisations.
49
50
Relation 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.
51
Relation d'inclusion
52
Relation d'inclusion
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.
Retirer de l'argent
<<include>>
Dposer de l'argent
<<include>>
S'authentifier
<<include>>
Effectuer des virements
<<include>>
Consulter solde
53
Relation 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.
54
Relation 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. Il est juste un artifice pour
faire de la rutilisation dune portion de texte.
55
Relation 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
56
Relation d'extension
La relation strotype extend permet
d'tendre les interactions et donc les
fonctions dcrites dans les cas d'utilisation,
mais sous certaines contraintes.
57
Relation d'extension
<<extend>>
Point d'insertion
58
Relation d'extension
59
Relation d'extension
Exemple :
Au moment de l'authentification, il se peut que
le guichet retient la carte.
S'authentifier
Retenir la carte
<<extend>>
60
Relations dinclusion VS
d'extension
61
Relation d'hritage
62
63
Reserver voyage
65
66
67
<<extend>>
<<include>>
Virement par Internet
Client distant
Client local
68
69
70
Identification
71
1.
2.
3.
4.
5.
6.
7.
Scnario nominal
Le Guichetier saisit le numro de compte client
Lapplication valide le compte auprs du SC
Lapplication demande le type dopration au Guichetier
Le Guichetier slectionne un retrait de 200 DH
Le systme interroge le SC pour sassurer que le compte
est suffisamment approvisionn.
Le SC effectue le dbit du compte
Le systme notifie au guichetier quil peut dlivrer le
montant demand
72
1.
73
Guichetier
Saisie du numro de compte client
Systme Central
Vrfification
Dbiter le compte
74
75
76
Reteni r l a carte
Cl i ent
<<i nclude>>
<<extend>>
S'authenti fi er
Agent
Ravi tai l l er
T echni cien
Rparer
77
tapes de construction du
diagramme des cas
Pour modliser le diagramme des cas d'utilisation, il faut :
d'utilisation
Identifier les acteurs qui entourent le systme. Certains acteurs
78
Diagramme dUML
Cas dutilisation
Composants
Objets
Classes
Squence
Collaboration
Vue Implmentation
(composants logiciels)
Vue externe
(fonctions systme)
Vue dploiement
Vue logique dynamique
(Environnement
(Comportement)
dimplantation)
tats transitions
Activits
Dploiement
79
UML
Diagrammes de classes et
dobjets
80
Diagramme de classes
Classes d'objets
Relations entre classes
Associations
agrgation/composition
hritage
Le concept dobjets
Le concept de classes dobjets comprenant des attributs et
des oprations
Les diffrents types de relations entre classes.
81
Concept d'objet
Objet = un concept, abstraction ou une chose
autonome qui a un sens dans le contexte du
systme modliser
82
Concept d'objet
Remarque
Un objet doit :
tre autonome
Avoir une signification dans le systme
En relation avec d'autres objets
Concept d'attribut
84
Concept d'attribut
La description dun attribut comporte :
Visibilit attribut:type[= valeur initiale]
O :
Visibilit :
Nom dattribut
Type de lattribut
Valeur initiale (facultative)
85
Concept d'attribut
Le type dun attribut peut tre :
Exemples dattributs :
Concept d'attribut
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.
Rectangles
- Largeur
: float
- Longueur : float
- /Surface : float
= 10
87
Concept d'attribut
On distingue deux types d'attributs :
Attribut d'instance :
Attribut de classe
88
Concept d'attribut
Window
-
taille
visibilit
taille_defaut
taille_max
:
:
:
:
Rectangle
boolean
Rectangle
Rectangle
= (100,100)
= true
+ <<Constructor>> Window ()
+
afficher ()
+
cacher ()
+
getTaille_max ()
+
getTaille_defaut ()
Attributs d'instances
Attributs de classes
:
:
:
:
void
void
Rectangle
Rectangle
Oprations d'instances
Oprations de classes
89
Concept d'opration et
mthode
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 .
90
Concept d'opration et
mthode
Une mthode est
limplmentation dun service offert par la
classe (opration).
de diffrents types :
Concept d'opration et
mthode
La description dune opration comporte :
Visibilit opration([arguments:type[=valeur
initiale]]):type de rsultat
Concept d'opration et
mthode
Exemples d'oprations :
Compte
- NCompte : String
- Solde
: float
- Client
: Personne
+ <<Constructor>> Compte ()
+
Deposer (float somme) : void
+
Retirer (float somme) : float
+
AvoirSolde ()
: String
93
95
= 100
+ <<Constructor>> Compte ()
+
Deposer (float somme) : void
+
Retirer (float somme) : float
+
AvoirSolde ()
: String
96
Nom de la classe
Nom de la classe
Attributs
Attributs
Oprations
Nom de la classe
Oprations
97
Encapsulation, visibilit et
interface
Encapsulation, visibilit et
interface
Donnes
Traitement
User
99
Mthodes et classes
abstraites
{abstract}surface () : double
getAbs ()
: int
getOrd ()
: int
... ()
100
Classe Interface
Forme
101
Package
102
Package
103
104
Import de packages
105
Associations
106
Associations
Remarques
une association fonctionne (gnralement)
dans les 2 sens (bidirectionnelle)
termes associs : Nom, Sens de lecture,
degr (arit), Multiplicit, Rle, navigabilit et
le qualificateur
107
Associations
Nom et sens de lecture
108
Associations
Rle dune association
Dcrit le rle dune classe dans une association
109
Associations
Rle dune association
Utile surtout dans deux cas :
Avion
Personne
Personne
0..4
femme
Passager
0..1
mari
110
Associations
Classe association
Une association peut avoir des attributs = classe-association
111
Associations
Classe association
Entreprise
1..*
0..1
Emploi
- Priode : int
- Salaire : float
112
Associations
degr dune association = nombre de classes participantes
Association unaire : relie 2 instances d'une classe
association binaire : relie 2 classes
113
Associations
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
114
Associations
Exemple ternaire
115
Associations
Notation abrge des multiplicits :
1
1..1 (exactement 1)
0..* (0 ou plusieurs)
n .. n (exactement n)
116
Association
Navigabilit
Clients
1..*
1
117
Association
Navigabilit (Exemple)
Clients
1..*
1
118
Association
Navigabilit (Exercice)
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)
119
Qualification d'une
association
120
Qualification d'une
association
Exemple : une banque contient plusieurs
comptes, d'o le diagramme :
Banque
Compte
1..*
NCompte
1
121
Qualification d'une
association
Exercice
Un avion est compos de plusieurs siges,
mais dans une range il y a seulement
quatre siges.
122
Agrgation
Type particulier dassociation dans laquelle :
Agrge
123
Agrgation
124
Agrgation
Titre
0..1
1..1
Destinataire
1..*
E-Mail
0..*
Fichier
0..*
Ici, on exprime qu'un fichier peut tre attach un email (ou a
plusieurs, ou mme aucun) et qu'un email peut (ou non)
attacher (contenir une copie) une ou plusieurs fichiers.
1..1
0..1
Texte
125
Composition
Composition
127
Composition
128
Gnralisation / Spcialisation
et hritage
Gnralisation / Spcialisation et
hritage
gnraliser = mettre en facteur des classes super-classe
spcialiser = dcrire de nouveaux dtails
sous-classes
Gnralisation / Spcialisation
et hritage
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.
131
Gnralisation / Spcialisation
et hritage
Compte
- NCompte : String
- Solde
: float
+ <<Constructor>> Compte ()
+
Dposer (float Somme) : void
+
Retirer (float Somme) : float
+
AvoirSolde ()
: String
CompteEpargne
- Taux : float
+ AvoirSolde () : String
132
Gnralisation / Spcialisation
et hritage
Remarques
La gnralisation et la spcialisation sont
deux faons pour voir la mme relation, topdown (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.
133
Gnralisation / Spcialisation
et hritage
Personnes
- Code : int
- Nom : String
+ <<Constructor>> Personnes (int Code, String Nom)
+
getNom ()
: String
+
getInf ()
: String
Spcialisation
Gnralisation
Etudiants
- Salaire : float
+ <<Constructor>> Etudiants (int Code, String Nom, float Salaire)
+
getInf ()
: String
+
getSalaire ()
: float
Sous classes
Classes filles
Classes drives
Employes
- Filiere : String
+ <<Constructor>> Employes (int Code, String Nom, String Filiere)
+
getInf ()
: String
+
getFiliere ()
: String
134
Gnralisation / Spcialisation
une classe peut hriter de plusieurs super-classes
= hritage multiple
135
Gnralisation / Spcialisation
polymorphisme = oprations de mme nom, polymorphisme
= comportement spcifique
136
{ordonn}
{sous ensemble}
{xor}
{addOnly}
{frozen}
138
0..*
{Ordonn}
Compte
139
Parent dlve
1..*
{sous-ensemble}
Personnes
Dlgu
1..*
Les personnes qui jouent le rle de dlgu font partie des personnes
qui jouent le rle de parents dlves
140
PC Portable
1
{xor}
1
Secteur
141
1..*
Liste
1
0..*
{addOnly}
Enfants
142
0..*
enfant
143
144
145
Exemple de diagramme de
classes
(Distributeur Automatique de Banque : DAB)
147
Diagramme dobjets
Diagramme dobjets
Nom : Classe
Nom
:Classe
149
Diagramme dobjets
Exemple :
Une entreprise emploie au moins deux
personnes
Une personne travaille dans au plus deux
entreprises
150
Diagramme dobjets
Exemple
Entreprise
:Entreprise
e1:Entreprise
0..2
2..*
Personne
:Personne
p1:Personne
p2:Personne
p3:Personne
p4:Personne
151
b.
152
UML
Diagrammes de squences
153
Diagramme de squences
Les acteurs
Les objets
Les messages
154
Diagramme de squences
Obj et_1
Obj et_2
Obj et_3
M essage_1
M essage_2
Li gne de vi e de
l 'obj et
155
Diagramme de squences
156
Diagramme de squences
157
Diagramme de squences :
Exemple
Compte
- NCompte : String
- Solde
: float
+ <<Constructor>> Compte (int n, float s)
+
dposer (float somme) : void
+
retirer (float somme) : float
+
consulter ()
: float
Diagramme de squences
Plusieurs concepts additionnels :
Priode dactivit
Types de messages
Cration et destruction dobjets
Structures de contrles
159
Priode dactivit
Objet_1
Message_1
160
Messages
Message simple
Message minut (Timeout)
Message synchrone
Message asynchrone
Message rcursif
161
Message simple
Message pour lequel on ne spcifie aucune
information denvoi ou de rception
Objet_1
Objet_2
Message_1
162
Objet_1
163
Porte
ouvrir (2 secondes)
fermer
164
Objet_1
Message_1
165
Serveur
Sollitation
Acceptation
Requte
Rponse
166
Message asynchrone
Obj et_1
M essage_1
167
Message rcursif
Message_1
168
GAB
Introduire carte
Vrification validit
Demande code accs
169
Cration et destruction
dobjets
Un message peut crer ou dtruire un objet
Objet_1
Objet_3
Message_1
Cration dobjet
Objet_2
Message_2
Destruction dobjet
171
}
class Conducteur{
private Voiture voiture;
public void conduire(){
voiture.demarrer();
}
main(String[] arg){
conducteur.conduire();
172
Structures de contrle
Le diagramme de squences peut inclure un
certain nombre de structures
Branchements (tests)
Rptitions (itrations, boucles)
173
Objet_2
Objet_3
[condition]: Message
174
Systme
175
Objet_2
Objet_3
* [condition]: Message
176
Fragments
loop : boucle
alt : alternative
ref : rfrence
177
Fragments
Tant que x>0 faire
Si x>0 alors
Si x<0 alors
178
UML
Diagrammes de collaboration
179
Diagramme de collaboration
Diagrammes de collaboration
181
Diagrammes de collaboration
lments dune interaction
Instances
liens
messages
Diagrammes de collaboration
:Appelant
1. Dcrocher
:Ligne
2. Tonalit
3. Numrotation
4.1a. Tonalit sonnerie
6.1a. Arrt tonalit
4.1b. Sonnerie
5. Dcrocher
6.1b. Arrt sonnerie
:Appel
183
Diagrammes de collaboration
Aspect temporel
1, 2, 3, 4 : Numrotation simple
idem dot notation, mais les points 1.1a et 1.1b peuvent tre
effectus en parallle
184
Diagrammes de collaboration
Itration : *[condition]
Conditions : [condition]
:Vendeur
4. livrer(n, item)
2. vrifier(n, item)
:Stock
3. [disponible]rserver(n, item)
185
Diagrammes de collaboration
<<{Nouveau}>>
Objet_1
Objet_2
186
Diagrammes de collaboration
Conclusion
Reprsentation spatiale
187
Exemple : Ascenseur
(Squence)
188
Exemple : Ascenseur
(Collaboration)
189
UML
Diagramme tat-transition
190
Diagramme tat-transition
Le diagramme tat-transition :
Fait partie des modles dynamiques
Dcrit l'enchanement de tous les tats d'un
objet
Propre une classe donne. Il dcrit :
Diagramme tat-transition
Le diagramme tat-transition manipule
plusieurs concepts :
tat
Transition
vnement
Garde
192
tat
= True
193
Transition
Rduite
194
vnement
195
Exemple
Soit le diagramme dtats/transitions de lobjet Fentre
196
Gardiens
Evnement [Condition]
Etat2
197
Formalisme et exemple
Etat1
Employ recrut
Evnement [Condition]
Etat2
Employ en activit
198
Actions et activits
199
Activit
200
Action
201
Formalisme et exemple
Etat 2
Etat_1
entry / Action_1
do / Action_2
Evnement() / Action_3
exit / Action_4
entry / Act1
do / Act2
Evnement() / Act3
exit / Act4
Embauch
entry / Signer contrat
do / Assurer fonction
Arrive proposition() / Rponde la proposition
Mutation() / Changer d'affectation
exit / Rompre contrat de travail
202
Exercice
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)
203
Etat_2
204
Exemple (Feu de
signalisation)
Feu
- ID
: int
- Couleur : {Vert, Orange, Rouge}
Orange
Vert
Rouge
205
Point de dcision
206
Point de jonction
207
Points de choix
208
tat composite
209
Exemple
210
Historique
211
Concurrences
tats concurrents
Transitions concurrentes
212
tats concurrents
213
tats concurrents
214
Transitions concurrentes
Transitions concurrentes
216
UML
Diagramme d'activits
217
Introduction
Choix
Squences
Itrations
Paralllisme
Concepts de base
Plusieurs concepts sont manipuls :
tat
Activit
Transition (squentielle, alternatives ou
conditionnelle)
Synchronisation (disjonction et conjonctions
dactivits)
Itration
Swimlanes
219
Comportement conditionnel
220
Comportement conditionnel :
Exemple
Demander l'addition
[Prix<=Somme disponible]
Rgler la note
[Else]
Faire la vaisselle
221
Synchronisation
Synchronisation : Exemple
Dserrer le frein main
Barre de synchronisation
Fusion (conjonction)
Comportement parallle
Disjonction
Relcher l'embrayage
223
Itration : Exemple
Recevoir commande
Commander arti cl e
[pl us d'arti cl e]
224
Swimlanes
225
Rsum notation
226
Exemple rcapitulatif
227
Exemple rcapitulatif
Rcepti on commande
Annul er commande
Vri fi er carte crdi t
[El se]
[El se]
[Di sponi bl e]
[Val i de]
Prparer commande
Expdi er commande
Poster facture
228
Exercice 1
Reprsenter les tats suivants sous forme de
diagramme d'activit :
Vrification commande
Enregistrement commande
Rejet commande
Informer erreur au client
229
Exercice 1 : solution
Vrifier commande
Valide
[oui]
Enregistrement commande
[non]
Rejet commande
230
Exercice 2
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
Exercice 2 : solution
232
Exercice 3
Construire un diagramme dactivit pour
modliser le processus de commander dun
produit. Le processus concerne les acteurs
suivants:
Comptable : enregistrement commande,
envoie la facture et enregistrement paiement
du client
Client : paiement de la facture
233
Exercice 3 : solution
234
Exercice 4
Construire un diagramme dactivit pour modliser le
processus de commander dun produit. Le
processus concerne les acteurs suivants:
Client: qui commande un produit et qui paie la
facture
Caisse: qui encaisse largent du client
Vente: qui soccupe de traiter et de facturer la
commande du client
Entrept: qui est responsable de sortir les articles
et dexpdier la commande.
235
Exercice 4 : solution
236
UML
Diagrammes de Composants et de
Dploiement
237
Diag de Composants/
Dploiement
Diagramme de composants
239
Diagramme de composants
240
Diagramme de composants
241
Composant
242
Composant
Nom du composant
Component1
Nom du composant :
document : un document
243
Concepts
Interface :
Ralisation :
Dpendance :
Interface
Component1
Component2
Interface1
dpendance
ralisation
Interface
Interface1
Component1
Attributs
Component2
Oprations
245
Dpendance :
Component1
Component2
246
Contenance :
Component 1
Component 2
247
Systme Vente
(diagramme de classes)
Ligne de vente
enregistre
SpcificationProduit
-Description : string
-Prix : real
+getDescritption(In Item:undefined):string
+getPrix(In Item:undefined):real
-quantit : integer
+setQuantit(In quantit:integer)
1..*
contenu dans
Contient
1
1..*
Vente
-Date : undefined
-Heure : undefined
+initierPaiement(In montant:real)
1
est paye par
Magasin
+nom : string
+adresse : string
utilise
1
Catalogue
1
+ObtenirSpec(In Item:undefined):SpcificationProduit
Paiement
-montant : real
-mode : string
248
Diagramme de composants
(Exemple)
Systme Vente
<<executable>>
IHM_Caisier
<<interface>>
InterfaceProduit
InterfacePaiement
<<library>>
JavaSwing
<<executable>>
Enregistrement-Produits
<<executable>>
GestionPaiement
InterfaceAutorisation
InterfaceImpts
<<executable>>
Gestion d'autorisation
Gestion d'Impts
InterfaceCatalogue
<<utility>>
CatalogueProduits
249
Diagramme de dploiement
Nuds
Relations : (dpendance, associations)
250
Nud
251
Nud
Nom du nud
Nom du nud :
Nud 1
Dpendance :
Peut tre galement exprime entre les composants rsidant dans un mme nud
Notation UML
Nud 1
Client
IHM
Composant1
Composant 2
253
Association
TCP / IP
1
1..*
Notation UML
Nud 1
Nud 2
254
Diagramme de dploiement
(Exemple)
Systme Vente
Serveur de Calcul
InterfaceAutorisation
<<executable>>
<<executable>>
Enregistrement-Produits
InterfaceImpts
<<executable>>
Gestion d'Impts
GestionPaiement
Gestion d'autorisation
InterfacePaiement
1
1
LAN
LAN
Serveur de Donnes
Ventes
<<executable>>
InterfaceCatalogue
1..*
IHM_Caisier
<<library>>
JavaSwing
<<utility>>
CatalogueProduits
255
Diagramme de dploiement
Serveur
Base <<utility>>
de Donnes
Base de
Donnes
Ordonnanceur
interface
TCP / IP
1
1..*
Client
IHM
256
Diagramme de dploiement
257
Correspondance UML
et Java
258
259
Personne
}
260
261
.
.
.
262
263
Forme
}
264
}
267
268
269
Employe
}
Class Employe extends
Personne{
}
270
271
}
interface B{
}
class C implements A, B {
}
272
274
276
277
278
279
281
UML
De UML vers le modle relationnel
282
Associations,
Agrgation,
Composition,
Gnralisation spcialisation
r
283
Classe en Relationnel
284
En Relationnel
Compte(NCompte, Solde)
En SQL
Compte
- NCompte : int
- Solde
: float
+ <<Constructor>> Compte (int NCompte, float Solde)
+
deposer (float Solde)
: void
+
retirer (float Solde)
: float
+
avoirSolde ()
: String
NCompte smallint,
Solde decimal,
Primary key PK_Compte (NCompte)
285
Gnralisation/spcialisation en
Relationnel
Plusieurs mthodes de traduction en
Relationnel :
Reprsenter toutes les classes dune
arborescence dhritage par une seule table
relationnelle
Reprsenter chaque classe par une table
286
Gnralisation/spcialisation en
Relationnel
287
Gnralisation/spcialisation en
Relationnel
288
Associations en Relationnel
(Association un--un)
Deux solutions sont possibles :
une cl trangre dans chacune des tables
associes
la fusion des deux tables dans une seule
289
Associations en Relationnel
(Association un--un)
1re Solution
Pays(IdPays, NomP,#IdCapitale)
Capitales(IdCapitale, NomC, #IdPays)
2ime Solution
290
Associations en Relationnel
(Association un--un)
1re Solution
create table Pays(IdPays integer primary key,
et
create table Capitales(IdCapitale integer primary key,
,
IdPays integer foreign key refernces pays(IdPays))
2ime Solution
Pays(IdPays integer primary key,
NomP varchar(20),
NomC varchar(20))
291
Associations en Relationnel
(Association un--plusieurs)
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
292
Associations en Relationnel
(Association un--plusieurs)
En Relationnel
Dept(IdDept, Nomdept)
Emp(IdEmp, NomEmp, #IdDept)
En SQL
)
r
293
Associations en Relationnel
(Association plusieurs-
plusieurs)
Lassociation est traduite par une table dont
294
plusieurs)
Articles(Ref, Des, PU)
295
296
OCL
297
Contraintes
298
Contraintes
{ordered}
{subset}
{frozen}
{xor}
299
Contraintes Exemple
300
Contraintes Exemple
301
Introduction
302
Contexte
303
Contexte
Syntaxe
context <lment>
O : <lment> : peut tre une classe, un attribut,
une opration, etc.
304
Contexte
Invariants
306
Invariants
Exemple :
Le solde dun compte doit tre toujours positif
context Compte
inv : solde>0
307
Prconditions et
postconditions
308
Prconditions et
postconditions
309
Prconditions et
postconditions
Syntaxe de la prcondition
pre : <expression logique>
Syntaxe de la postcondition
post : <expression logique>
310
Prconditions et
postconditions
Exemples :
context Compte::debiter(somme : Real)
pre : somme>0
post : solde=solde@pre-somme
context Compte::getSolde():Real
post : result=solde
311
Syntaxe :
body : <requte>
<requte> : expression qui retourne le rsultat
dont le type est compatible avec le type de
retour de lopration
312
context Compte::getSolde():Real
body : solde
313
Motivation :
314
315
1.
2.
3.
Exemples
context Personne
inv : let argent=compte.solde->sum() in
age>=18 implies argent>0
context Personne
def : argent : Real = compte.solde>sum()
context Personne
inv : age>=18 implies argent>0
316
318
319
Boolean
Integer
Real
String
320
oprateurs
+,-, *, /, abs(),
Real
String
321
a and b
a or b
a xor b
a implies b
322
If <exp_log0>
Then <exp_log1>
Else <exp_log2>
Endif
323
Collections
324
Collections
Collection
Set
Non
Oui
OrderedSet Oui
Oui
Bag
Non
Non
Sequence
Oui
Non
325
- Opration
de base La syntaxe : collection->operation()
select(cond) : retient
- Filtrage
- les lments qui vrifient la condition
327
Opration ensembliste
- Set ou OrederedSet
union(ens) : union
328
1.
2.
329
331
employeur
socit
employeur.adresse
socit.adresse
332
2.
333
335
336
337
338
339
340