Vous êtes sur la page 1sur 340

UML : Unified Modeling Language

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

Cycle de vie dun logiciel


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.

Cycle de vie dun logiciel


4

tapes ncessaires la ralisation dun logiciel:

Analyse
Conception
Codage (Implmentation)
Tests
Livraison
Maintenance

Cycle de vie dun logiciel


Modle en Cascade (WaterFall)
5

Analyse
Conception

Implmentation

Tests

Maintenance

Cycle de vie dun logiciel


Analyse
6

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)

Cycle de vie dun logiciel


Faisabilit
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 uvre ?

tudier le march pour dterminer sil


existe un march potentiel pour le produit.
7

Cycle de vie dun logiciel


Spcification des besoins
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


Spcification des besoins
9

La spcification gnrale consiste identifier :


Objectifs atteindre
Contraintes (utilisation du matriel et outils
existants)
Rgles de gestion respecter

Cycle de vie dun logiciel


Spcification des besoins
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
(IHM), autres logiciel (Middleware), machines

10

Cycle de vie dun logiciel


Spcification des besoins
11

Spcification technique :(tude de lexistant)


Moyens daccs (local, distant, Internet, )
Temps de rponse acceptable (gestion des GAB,
gestion des emplois de temps, )
Plateforme (Windows, Unix, )
Quantit dinformations stocker (choix du
SGBDR, )

11

Cycle de vie dun logiciel


Organisation du projet
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 enchanement dans le temps,
affecter chacune une dure et un effort

12

Cycle de vie dun logiciel


Organisation du projet
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)

13

Cycle de vie dun logiciel


Conception
14

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

Cycle de vie dun logiciel


Conception gnrale
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, )

15

Cycle de vie dun logiciel


Conception dtaille
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)

16

Cycle de vie dun logiciel


implmentation (Ralisation)
17

Des programmes seront labors afin de


mettre en uvre des solutions techniques
prcdemment retenues
Plusieurs types langages sont utiliss:
Langages classiques (C, Pascal, Fortran, )
Langages orients objets (C++, Java, C#, )

17

Cycle de vie dun logiciel


Codage et Tests
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.

18

Cycle de vie dun logiciel


Livraison
19

Fournir au client une solution logiciel qui


fonctionne correctement.
Plusieurs tches :
Installation: rendre le logiciel oprationnel sur le
site du client
Formation: enseigner aux utilisateurs se servir
de ce logiciel
Assistance: rpondre aux questions de lutilisateur

19

Cycle de vie dun logiciel


Maintenance
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

20

Cycle de vie dun logiciel


Documents
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
IHM : propositions des interfaces homme-machines

21

Cycle de vie dun logiciel


Documents
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

22

Cycle de vie dun logiciel


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

23

Historique
Dans le cadre de la modlisation des SI, on
distingue Deux approches

Approche fonctionnelle

1960 fin 1970


l'important c'est les traitements
Sparation nette des donnes et traitements
(MCD et MCT dans Merise, par exemple)

Approche objet

1980 dbut 1990 : premires gnration


L'important c'est l'objet
Objet = donnes + traitements
24

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

mthode OOD de Grady Booch (1991)


mthode OMT de James Rumbaugh (1991)
mthode OOSE de Ivar Jacobson (1991)
mthode OOA/OOD de Coad and Yourdon (1992)
mthode de Schlaer and Mellor (1992)
Etc.
25

Historique
Fin 1994
J. Rumbaugh rejoint G. Booch chez Rational Software

OMT + OOD Unified Method (oct 1995)


Fin 1995
I. Jacobson les rejoint chez Rational Software
Unified Method + OOSE UML 0.9 (juin 1996)
Dbut 1997
Partenaires divers : Microsoft, Oracle, IBM, HP et autres leaders
collaborent

UML 1.0 (jan 1997)


Fin 1997
lOMG (Object Management Group) retient UML 1.1 comme
norme de modlisation
26

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

Quest ce que UML ?


UML(Unified Modeling Language) un
langage de modlisation unifi
Langage = syntaxe + smantique :

syntaxe : notations graphiques consistant


essentiellement en des reprsentations
conceptuelles d'un systme
smantique : sens prcis pour chaque notation

28

Quest ce que UML ?

UML est caractris par :

un travail d'expert
utilise lapproche oriente objet
normalis, riche
Formel : sa notation limite les ambigut et les
incomprhensions
langage ouvert

INDPENDANT 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,
29

Quest ce que UML ?


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.

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)

diagramme de classes: reprsente la partie statique du systme en


intgrant dans chaque classe la partie ddie aux donnes et celles
consacre aux traitements. Cest le diagramme pivot de la modlisation
du systme.
diagramme dobjets: reprsente les instances des classes du
diagramme de classes
diagramme de composants: reprsente les diffrents constituants
logiciel dun systme en terme de modules : fichiers source, librairies,
excutables, etc.
diagramme de dploiement: montre la disposition physique des
matriels qui composent le systme et la rpartition des composants
sur ces matriels

32

Modlisation du comportement: (comment le systme

EVOLUE)

diagramme de cas d'utilisation: destin reprsenter les


besoins des utilisateurs par rapport au systme. Point de vue de
lutilisateur
diagramme dtats/transitions : montre les diffrents tats par
lesquels passe un objet en ractions aux vnements.
diagramme dactivits: donn une vision des enchanements des
activits propres une opration ou un cas dutilisation.
diagramme de collaboration: une autre reprsentation des
scnarios des cas dutilisation qui met laccent sur les objets et les
messages changs.
diagramme de squence: permet de dcrire les scnarios de
chaque cas dutilisation en mettant laccent sur la chronologie des
interactions entre objets.

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

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

36

Diagramme 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

37

Diagrammes des cas


d'utilisation
Comportent plusieurs lments :
Acteurs
Cas d'utilisation
Relations de dpendances, de
gnralisations et d'associations

38

Acteurs

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)
39

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 :

Petit personnage (stick man)


Nom Acteur

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

Dans ce cas, on utilise la


relation de
gnralisation/spcialisation.
Acteur spcialis

45

Cas d'utilisation

Introduit par Ivar 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
46

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.

Nom Cas Utilisation

48

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

49

Structuration 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

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

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).
B
<<include>>

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

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
A
B

<<extend>>

Point d'insertion

Le comportement ajout sinsre au niveau dun


point dextension dfinit dans le CU destination

58

Relation d'extension

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.

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

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.

61

Relation d'hritage

Il peut galement exister une relation


d'hritage entre cas d'utilisation.
Cette relation exprime une relation de
spcialisation/gnralisation au sens
classique.

62

Relation d'hritage : Exemple


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

63

Relation d'hritage : Exemple

On voit qu'il ne s'agit pas d'une relation "extend", car


la rservation par Internet 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 Internet" sont lis : la
rservation par Internet est un cas particulier de
rservation.
De faon gnrale en objet, une situation de cas
particulier se traduit par une relation de
gnralisation/spcialisation.
64

Relation d'hritage : Exemple

Reserver voyage

Rserver voyage par tlphone

Rserver voyage par Internet

65

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

66

Relations entre cas


dutilisation : Exemple
Un client peut effectuer un retrait bancaire. Le
retrait peut tre effectu sur place ou par
Internet. Le client doit tre identifi (en
fournissant son code daccs) pour effectuer
un retrait, mais si le montant dpasse
500DH, la vrification du solde de son
compte est ralise.

67

Relations entre cas


dutilisation
Virement

<<extend>>

Vrification solde compte

Montant > 500 DH

<<include>>
Virement par Internet

Virement sur place


Identification

Client distant

Client local

68

Description 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

69

Description des cas


dutilisation
Deux faons sont couramment utilises pour
dcrire les cas dutilisation :
Description textuelle
Description laide dun diagramme de
squence (voir chapitre suivant)

70

Description des cas dutilisation


(description textuelle)

Identification

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)

71

Description des cas dutilisation


(description textuelle)
Scnarios

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

Description des cas dutilisation


(description textuelle)
Scnarios

1.

Scnario alternatif (exception)


En (5) : si le compte nest pas suffisamment
approvisionn .

73

Description des cas dutilisation


(description par diagramme de
squence)
Systme

Guichetier
Saisie du numro de compte client

Systme Central

Demande de validit de compte


OK

Vrfification

Demande type opration


Retrait(somme)
Compte suffisamment approviosionn
Compte dbit

Dbiter le compte

Autorisation de dlivrer somme

74

Intrts 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

75

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

76

Diagramme des cas


d'utilisation
Dposer de l 'argent

Reteni r l a carte

Cl i ent

<<i nclude>>

Reti rer de l 'argent

<<extend>>

<<i ncl ude>>

Consul ter l e sol de

<<i ncl ude>>

S'authenti fi er

<<i ncl ude>>

Effectuer des vi rements entre comptes

Fourni r un l ogi n et un mot


de passe

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

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
Intgrer 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)

78

Diagramme dUML
Cas dutilisation
Composants

Objets
Classes

Squence

Collaboration

Vue logique statique


(Structure des objets)

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

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

Concept d'objet
Objet = 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 objet concret : le livre intitul Initiation
un objet abstrait : le compte bancaire n
1915233C

82

Concept d'objet
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,
83

Concept d'attribut

Un attribut est une proprit, caractristique


dun objet. Par exemple :

un client a un nom, un prnom, une adresse, un


code client,
un compte bancaire a un numro, un solde,

Un attribut doit (gnralement) avoir une


valeur atomique

84

Concept d'attribut
La description dun attribut comporte :
Visibilit attribut:type[= valeur 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)
85

Concept d'attribut
Le type dun attribut peut tre :

Un type de base : entier, rel,


Une expression complexe : tableaux,
enregistrements,
Une classe

Exemples dattributs :

- couleur : enum{Rouge, Vert, Bleu}


# b : boolean = vrai
- Client : Personne
86

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 :

Chaque instance de la classe possde une valeur


particulire pour cet attribut
Notation : Visibilit attribut:type[= valeur initiale]

Attribut de classe

Toutes les instances de la classe possde la mme valeur


pour cet attribut
Notation : Visibilit attribut:type[= valeur initiale]
quivalent en C++, Java : static

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 :

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
91

Concept d'opration et
mthode
La description dune opration comporte :
Visibilit opration([arguments:type[=valeur
initiale]]):type 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
92

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

Concept de classes dobjets

Classe = ensemble dobjets ayant les mmes


proprits (attributs) et le mme comportement
(oprations)

tous les clients sont dcrits par un nom, un prnom, et


peuvent marcher, parler,courir,
tous les comptes bancaires ont un numro, 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.
94

Concept de classes dobjets


Classe reprsente par un rectangle trois
parties :

Partie 1 : Nom de la classe


Partie 2 : Attributs (proprits, champs)
Partie 3 : Mthodes (fonctions, oprations)

95

Concept de classes dobjets


Compte
- NCompte : String
- Solde
: float
# Client
: Personne

= 100

+ <<Constructor>> Compte ()
+
Deposer (float somme) : void
+
Retirer (float somme) : float
+
AvoirSolde ()
: String

96

Concept de classe d'objets


On peut ne pas visualiser les attributs et/ou les
oprations, afin de ne pas alourdir
inutilement le schma.
Nom de la classe

Nom de la classe

Nom de la classe

Attributs

Attributs

Oprations

Nom de la classe

Oprations

97

Encapsulation, visibilit et
interface

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

Encapsulation, visibilit et
interface
Donnes

Traitement

Partie statique, passive


Partie cache, prive
Partie dynamique, comportementale
Partie visible, publique
Interface avec lextrieur

User

99

Mthodes et classes
abstraites

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
FormeGomtrique
{abstract}
- abs : int
- ord : int
+
+
+
+

{abstract}surface () : double
getAbs ()
: int
getOrd ()
: int
... ()
100

Classe Interface

Une interface est une classe spciale dont


toutes les mthodes sont abstraites
Une interface se note en UML avec le
strotype <<interface>> ou symbole

Forme

101

Package

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

102

Package

Un package est reprsent par un rectangle


possdant un onglet dans lequel est inscrit le
nom du package

103

Import des packages

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.

104

Import de packages

La relation dimport sexprime avec une


flche en pointill
Dans lexemple, la classe Afficheur a besoin
des classes du package Dessin

105

Associations

Relation existant entre une, deux ou


plusieurs classes.
Une association porte un nom (signification)
Reprsente par une ligne rectiligne

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

Dcrit la nature (signification) de lassociation


Montre la direction de lecture de lassociation

108

Associations
Rle dune association
Dcrit le rle dune classe dans une association

109

Associations
Rle dune association
Utile surtout dans deux cas :

Avion

Lorsquon a plusieurs associations entre deux


classes avec des rles diffrents
une relation rflexive : relation entre deux
instances dune mme classe
Pilote

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

Les classes association sont utiles quand il y


a des attributs qui sont pertinents
lassociation, mais aucune des classes
impliques.
Personne

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

association ternaire : relie 3 classes


association n-aire : relie n 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

Pour un couple dinstances de la classe A et de la classe B,


il y a au min. r1 instances de la classe C et au max. r2 instances,

115

Associations
Notation abrge des multiplicits :
1

1..1 (exactement 1)

0..* (0 ou plusieurs)

n .. n (exactement n)

1..* 1 ou plusieurs (1 ou plus)


0..1 0 ou 1 (au plus un)
1..100 entre 1 et 100
2,4,5 2, 4 ou 5

116

Association
Navigabilit

Une association est par dfaut


bidirectionnelle.
Commandes

Clients
1..*
1

Cependant, il peut tre utile de se limiter


une seule direction association navigable

117

Association
Navigabilit (Exemple)

Spcification : on doit tre en mesure de savoir le


client qui a fait la commande et non toutes les
commandes dun client
Conception :
Commandes

Clients
1..*
1

Implmentation : la classe commande doit avoir un


champ faisant rfrence la classe client

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

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.

120

Qualification d'une
association
Exemple : une banque contient plusieurs
comptes, d'o le diagramme :
Banque

Compte
1..*

Par contre, si on connat le NCompte, il y a un


et un seul compte, on obtient alors :
Compte
Banque

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 :

Classe agrgat (compos), classes agrge


(composant)
Entre les deux, il existe une relation de type est
compos de
Agrgat

Agrge

123

Agrgation

Les parties (les composants) sont sparables


de Lagrgat (le tout)
La suppression dune quipe nimplique pas
la suppression des personnes qui la
composent

124

Agrgation
Titre

0..1

Un agrgat (compos) peut tre multiple.

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

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

Composition

la suppression dun objet agrgat entrane la suppression des


objets agrgs

127

Composition

Un document est compos de plusieurs


paragraphes, qui, son tour, est compos de
plusieurs phrases
Remarquer la propagation des oprations
(copie, suppression,)

128

Gnralisation / Spcialisation
et hritage

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
129

Gnralisation / Spcialisation et
hritage
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)
130

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

Super classe, classe mre

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

Contraintes sur les


associations

Concepts avancs des associations


Permettent dimposer des rgles respecter
lors du passage limplmentation
Il 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)
137

Contraintes sur les


associations
Les contraintes (prdfinies) souvent utilises :

{ordonn}
{sous ensemble}
{xor}
{addOnly}
{frozen}

138

Contraintes sur les associations


contrainte {ordonn}
Indique que les objets seront ordonns
chaque opration de cration, modification,
suppression,
Personne
1

0..*
{Ordonn}

Compte

Les comptes dune personne sont ordonns

139

Contraintes sur les associations


contrainte {sous-ensemble}

Indique quune collection est incluse dans


une autre
Ncessite la prsence dau moins deux
relations
Ecole

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

Contraintes sur les associations


contrainte {xor}
Indique que parmi un groupe dassociations,
une seule est valide la fois
Batterie
1

PC Portable

1
{xor}
1

Un PC Portable est aliment soit partir


dune batterie, soit partir dun secteur
1

Secteur

141

Contraintes sur les associations


contrainte {addOnly}
La contrainte prdfinie {addOnly} autorise
lajout de nouveaux objets, mais pas leur
suppression ni leur mise jour.
Personne

1..*

Liste

1
0..*

{addOnly}

Enfants

142

Contraintes sur les associations


contrainte {frozen}
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.
Personne
{frozen}
2
parent

0..*
enfant

143

Contraintes sur les associations


Exercices
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

144

Contraintes sur les associations


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

145

Contraintes sur les associations


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

Exemple de diagramme de
classes
(Distributeur Automatique de Banque : DAB)

147

Diagramme dobjets

Reprsente les objets (instances de classes)


et les liens (instances de relations) un
instant donn
Peut tre utilis pour :

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

Diagramme dobjets

Le nom dun objet est soulign

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

Etapes pour tablir un


diagramme
A partir dune description du systme :
1. Identifier un premier ensemble de classes candidates
2. Identifier les associations et les attributs
3. Identifier les gnralisations
4. Lister les traitements, choisir les oprations
5. Vrifier le modle obtenu
a.

Supprimer les transitivits

b.

Sassurer que le schma rpond la demande

6. Itrer jusqu satisfaction

152

UML

Diagrammes de squences

153

Diagramme de squences

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

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

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

156

Diagramme de squences

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

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

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)
158

Diagramme de squences
Plusieurs concepts additionnels :
Priode dactivit
Types de messages
Cration et destruction dobjets
Structures de contrles

159

Priode dactivit

Correspond au temps pendant lequel un


objet fait une action
Reprsente par une bande rectangulaire
superpose la ligne de vie de lobjet
Objet_2

Objet_1

Message_1

160

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
161

Message simple
Message pour lequel on ne spcifie aucune
information denvoi ou de rception
Objet_1

Objet_2

Message_1

162

Message minut (Timeout)

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
Objet_2

Objet_1

Message_1 (20 secondes)

163

Message minut (Timeout) :


Exemple
La porte dun ascenseur souvre pendant un
certain dlai avant dtre referme.
Ascenseur

Porte

ouvrir (2 secondes)

fermer

164

Message synchrone (appel de


procdure)

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)
Obj et_2

Objet_1

Message_1

165

Message synchrone (appel de


procdure) : Exemple
Communication client serveur : Sockets
Client

Serveur

Sollitation
Acceptation
Requte
Rponse

166

Message asynchrone

Ninterrompt pas lexcution de lexpditeur


Lexpditeur peut mettre sans attendre la
rponse du rcepteur
Obj et_2

Obj et_1

M essage_1

167

Message rcursif

Appel aussi message rflexive


Message envoy dun objet vers lui-mme.
Objet_1

Message_1

168

Message rcursif : Exemple


Lorsque le client introduit sa carte de guichet,
ce dernier vrifie la validit de la carte avant
de demander le code daccs
Client

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

Objet cr au cours de lexcution du scnario

Destruction dobjet

Objet dtruit dans un scnario


170

Traduction des messages

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

171

Traduction des messages


class Voiture{
Voiture
Public void demarrer(){}

}
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

Les test (branchements)


La condition prcde le message et elle est
dlimite par des crochets
Objet_1

Objet_2

Objet_3

[condition]: Message

174

Les test (branchements) :


Exemple
Pour accder au centre de recherche, lutilisateur
doit prsenter son badge. Sil a droit daccs, un
voyant vert est allum et la porte souvre
Utilisteur

Systme

Prsente son badge

Vrifier droit d'accs


[OK]voyant vert
ouvrir porte

175

Les boucles (rptitions)


La boucle se note comme le test, mais la
condition est prcde dun astrisque
Objet_1

Objet_2

Objet_3

* [condition]: Message

176

Fragments

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

177

Fragments
Tant que x>0 faire

Si x>0 alors

Si x<0 alors

178

UML

Diagrammes de collaboration

179

Diagramme de collaboration

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

Interaction ralise par un groupe dobjets


qui collaborent en changeant des messages
180

Diagrammes de collaboration

Reprsentation graphique de lvolution dun


ensemble dobjets pour effectuer une action
Diffrences avec diagrammes de squence

pas daxe temporel


temps modlis par numrotation

181

Diagrammes de collaboration
lments dune interaction
Instances

liens

qui collaborent avec d'autres objets en changeant des


informations
:Classe
Objet:Classe
Reprsents par
qui sont des supports de messages
Reprsents comme des associations

messages

dclenchant les oprations


Indiqus par des flches
182

Diagrammes de collaboration

Exemple : Appel tlphonique

: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

modlis par numrotation des messages

Type et Smantique des numrotations

1, 2, 3, 4 : Numrotation simple

1, 1.1, 1.2, 1.2.1, 1.2.2, 1.2.3 : Dot notation

squencement des messages


squencement + un point : ne peut tre termin que si ses
sous points le sont aussi

1, 1.1a, 1.1b, 1.2, 1.3 : Dot notation + concurrence

idem dot notation, mais les points 1.1a et 1.1b peuvent tre
effectus en parallle
184

Diagrammes de collaboration

Mmes types contraintes que pour les


diagrammes de squence

Itration : *[condition]
Conditions : [condition]

Exemple : rservation darticles


1. commander(n, item)
:Client

:Vendeur
4. livrer(n, item)

2. vrifier(n, item)
:Stock
3. [disponible]rserver(n, item)

185

Diagrammes de collaboration

Les objets cres ou dtruits au cours dune


interaction peuvent respectivement porter
les contraintes :
{Nouveau}
{Dtruit}
<<{Dtruit}>>

<<{Nouveau}>>

Objet_1

Objet_2

186

Diagrammes de collaboration
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

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 :

Les tats des objets de cette classe


Les vnements auxquels ils ragissent
Les transitions qu'ils effectuent
191

Diagramme tat-transition
Le diagramme tat-transition manipule
plusieurs concepts :
tat
Transition
vnement
Garde

192

tat

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
Fentre
Affiche
- ID
: int
- Visible : boolean

= True

193

Transition

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
Restaure
Rduire

Rduite

194

vnement

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

195

Exemple
Soit le diagramme dtats/transitions de lobjet Fentre

196

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
Etat1

Evnement [Condition]

Etat2

197

Formalisme et exemple
Etat1

Employ recrut

Evnement [Condition]

Prise fonction [Date embauche chue]

Etat2

Employ en activit

198

Actions 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

199

Activit

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/"

200

Action

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/")

201

Formalisme et exemple
Etat 2

Etat_1
entry / Action_1
do / Action_2
Evnement() / Action_3
exit / Action_4

Evnement [Cond]/ Action

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

tat initial et tats finaux


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

204

Exemple (Feu de
signalisation)
Feu
- ID
: int
- Couleur : {Vert, Orange, Rouge}

Orange

Vert

Rouge

205

Point 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

206

Point de jonction

207

Points de choix

208

tat composite

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.

209

Exemple

210

Historique

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

211

Concurrences

Pour reprsenter la concurrences dans un


diagramme dtats/transitions, on utilise :

tats concurrents
Transitions concurrentes

212

tats 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

tats concurrents

214

Transitions 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

Transitions concurrentes

216

UML

Diagramme d'activits

217

Introduction

Variante des diagrammes d'tat-transition


Permet de dcrire le flot de contrle entre les
oprations :

Choix
Squences
Itrations
Paralllisme

Au niveau macroscopique : dcrit les


enchanements des oprations
Au niveau microscopique : dcrit l'algorithme d'une
action du diagramme d'tats
218

Concepts de base
Plusieurs concepts sont manipuls :
tat
Activit
Transition (squentielle, alternatives ou
conditionnelle)
Synchronisation (disjonction et conjonctions
dactivits)
Itration
Swimlanes
219

Comportement conditionnel

Appel aussi le branchement


Symbolise une transition entrante garde par
une condition et plusieurs transitions
sortantes mutuellement exclusives

220

Comportement conditionnel :
Exemple
Demander l'addition

[Prix<=Somme disponible]

Rgler la note

[Else]

Faire la vaisselle

221

Synchronisation

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

Synchronisation : Exemple
Dserrer le frein main

Barre de synchronisation
Fusion (conjonction)

Appuyer sur l'embrayage

Enclencher la 1re vitesse

Comportement parallle

Disjonction

Relcher l'embrayage

223

Itration : Exemple

Recevoir commande

Vri fier arti cl e

Commander arti cl e

[s'i l reste des articl es]

[pl us d'arti cl e]

224

Swimlanes

Extension des diagrammes d'activits


permettant de reprsenter l'organisation.
Reprsente le lieu, le responsable des
activits.

225

Rsum notation

226

Exemple rcapitulatif

227

Exemple rcapitulatif
Rcepti on commande

Annul er commande
Vri fi er carte crdi t

Vri fi er di sponi bi l i t produi t

[El se]

[El se]
[Di sponi bl e]

[Val i de]

Prparer commande

Expdi er commande

Dbi ter carte crdi t

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

Informer erreur au client

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

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
nuds de traitement et de composants qui
sont actifs
238

Diagramme de composants

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,

239

Diagramme de composants

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,

240

Diagramme de composants

Permet de dcrire l'architecture physique et statique d'une


application en terme de composants :
code source,
bibliothques,
excutables,
Il montre la mise en oeuvre physique des modles de la vue
logique dans l'environnement de dveloppement
Permet de spcifier :
Composants
Interfaces
Relations (dpendance, gnralisation, association, ralisation).

241

Composant

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

Composant

Nom du composant

Component1

Nom du composant :

Permet de distinguer un composant des autres composants

Il peut tre un nom simple ou un nom compos qui indique le paquetage


auquel appartient le composant
Strotypes : spcifient un composant qui dsigne:

executable : un programme pouvant sexcuter sur un nud

library : 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
243

Concepts

Interface :

Est une collection doprations utilises pour


spcifier les services dune classe ou dun
composant

Relations avec les interfaces

Ralisation :

Dfinie entre linterface et le composant qui fournit les


services pour les autres composants
Cette interface est appele interface exporte

Dpendance :

Dfinie entre linterface et le composant qui utilise les


services fournis par un autre composant
Cette interface est appele interface importe .
244

Interface

Component1

Component2
Interface1
dpendance

ralisation

Interface
Interface1
Component1

Attributs

Component2

Oprations

245

Relations entre les


composants

Dpendance :

Cela signifie quun des lments dun composant


a besoin des services que les lment de lautre
composant ralisent
Notation UML

Component1

Component2

246

Relations entre les


composants

Contenance :

Un composant peut tre contenu dans un autre


composant
Notation UML

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

Montre la configuration des nuds de excution et


des composants quy rsident
Montre les relations physiques entre les
composants logiciels et matriels dun systme
Permet de spcifier

Nuds
Relations : (dpendance, associations)

250

Nud

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 nud possde sa propre mmoire et
une capacit de traitement
Lensemble de composants qui est associ aux
nuds est appel unit de rpartition
Les nuds prennent en charge lexcution des
composants.

251

Nud
Nom du nud

Nom du nud :

Nud 1

Permet de distinguer un nud des autres nuds


Le nom peut tre compos du nom de paquetage qui contient
le nud

Strotypes : un nud peut possder un strotype qui permet de


le distinguer des autres types de ressources (permettant de
spcifier le types de ressources)

CPU : une unit de calcul


memory : une unit de stockage
device : un dispositif tel quun capteur
252

Relations entre nuds et


composants

Dpendance :

Montre la capacit dun nud de supporter un composant

Peut tre galement exprime entre les composants rsidant dans un mme nud

Notation UML

Nud 1

Client
IHM
Composant1

Composant 2

253

Relations entre deux nuds

Association

Indiquent une voie physique entre deux nuds


Exemple:

Une connexion Ethernet


Un bus de communication

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

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

259

Traduction dune classe


class Personne{

Personne
}

260

Traduction dune classe

Une classe abstraite est simplement une


classe qui ne sinstancie pas directement
mais qui reprsente une pure abstraction afin
de factoriser des proprits.
Elle se note avec {abstract} en UML et se
traduit par le mot-cl abstract en Java.

261

Traduction dune classe


abstract class Personne{
Personne
{abstract}

.
.
.

262

Traduction 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

263

Traduction dune classe


interface Forme {

Forme
}

264

Traduction des attributs

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

Traduction des oprations

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 italiques) se
traduisent par le mot-cl abstract en Java.
266

Traduction des oprations


class Personne {
private int code;
private String nom;
private static int nombre;
public Personne() {
}
public static int getNombre(){
}
public String getInf(){
}

}
267

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

268

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

269

Traduction des relations


(La gnralisation)
Class Personne{
Personne

Employe

}
Class Employe extends
Personne{

}
270

Traduction des relations


(La ralisation )

Une classe UML peut implmenter plusieurs


interfaces.
Contrairement C++, le langage Java
propose directement ce mcanisme.

271

Traduction des relations


(Ralisation)
interface A{
A

}
interface B{

}
class C implements A, B {

}
272

Traduction 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 *
273

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

274

Traduction 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 :
ArrayList, SortedList et HashTable.

Utilisez ArrayList si vous devez respecter un ordre et


rcuprer les objets partir dun indice entier
Utilisez HashTable si vous souhaitez rcuprer les objets
partir dune cl arbitraire.
275

Traduction des relations


(Les associations)

276

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

277

Traduction des relations


(Les associations)

278

Traduction des relations


(Les associations)

279

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

Traduction des relations


(La classe association)

281

UML
De UML vers le modle relationnel

282

De UML vers le modle


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
r

283

Classe en Relationnel

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

284

Traduction d'une classe

En Relationnel

Compte(NCompte, Solde)

En SQL

Create table Compte(

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

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.
Il nous suffit alors dajouter un champ
contenant le type de linstance pour pouvoir
charger les champs correspondants.

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

Pays(IdPays, NomP, NomC)

290

Associations en Relationnel
(Association un--un)

1re Solution
create table Pays(IdPays integer primary key,

IdCapitale integer foreign key references capitales (IdCapitale))

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

Create table dept()


Create table emp(IdEmp integer primary key,
NomEmp varchar(20),
IdDept integer foreign key references Dept(IdDept)

)
r

293

Associations en Relationnel
(Association plusieurs-
plusieurs)
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

294

Traduction des associations en


Relationnel
(Association
plusieurs-En Relationnel

plusieurs)
Articles(Ref, Des, PU)

Commandes(NBC, DateC, Client)


Dtails(#NBC, #Ref, Qt)

295

Traduction des associations en


Relationnel
(Association
plusieurs-En
SQL
1.
create table Article(Ref integer primary key, )
plusieurs)
2.
3.

create table Cde(NBC integer primary key, )


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

296

OCL

297

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({})

298

Contraintes

Nous avons vu comment exprimer certaines


contraintes avec UML

{ordered}
{subset}
{frozen}
{xor}

299

Contraintes Exemple

Dans cet exemple, on exprime le fait quun


solde doit rester toujours positif (utilisation
dun langage formel).

300

Contraintes Exemple

Dans cet exemple, on exprime un contrainte


avec un langage textuel non formel

301

Introduction

OCL est un langage de contraintes associ


UML
Il peut tre utilis pour contraindre nimporte
quel diagramme

302

Contexte

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

303

Contexte

Syntaxe
context <lment>
O : <lment> : peut tre une classe, un attribut,
une opration, etc.

Pour faire rfrence un lment dune


classe, il faut utiliser les ::

304

Contexte

Le contexte de la classe Compte


context Compte
Le contexte de lopration getSolde() de la
classe Compte
context Compte::getSolde():Real
Le contexte de lopration deposer() de la
classe Compte
context Compte::deposer(somme:Real)
305

Invariants

Un invariant exprime une contraintes sur un


objet ou un groupe dobjets qui doit tre
respecte en permanence
Syntaxe :
inv : <expression_logique>
Lexpression logique doit tre toujours vraie

306

Invariants
Exemple :
Le solde dun compte doit tre toujours positif

context Compte
inv : solde>0

307

Prconditions et
postconditions

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.

308

Prconditions et
postconditions

Dans lexpression de la contrainte de la


postcondition, deux lments particuliers sont
utiliss :

result : la valeur retourne par lopration


<attribut>@pre : la valeur de lattribut avant
lappel de lopration

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

Rsultat dune opration


Lexpression de contrainte body permet
dfinir directement le rsultat dune
opration

Syntaxe :
body : <requte>
<requte> : expression qui retourne le rsultat
dont le type est compatible avec le type de
retour de lopration

312

Rsultat dune opration


Exemple
La mthode getSolde() de la classe Compte
retourne le solde actuel

context Compte::getSolde():Real
body : solde

313

Dfinition des attributs et de


mthodes

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

Dfinition des attributs et de


mthodes
Syntaxes :
let <dclaration>=<requte> in <expression>

Lattribut dclar recevra le rsultat de la


<requte> dans toute l<expression>
def : <dclaration>=<requte>

315

Dfinition des attributs et de


mthodes

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

Initialisation et volution des


attributs

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 derive.
Syntaxes :
init : <requte>
derive : <requte>
317

Initialisation et volution des


attributs
Exemple
Quand on cre une personne, la valeur initiale
de lattribut mari est faux, et la personne ne
possde pas demployeur.
context Personne::mari:Boolean
init : false
context Personne::employeur:Set(Socit)
init : set{}

318

Initialisation et volution des


attributs
Exemple
Lge dune personne est la diffrence entre
la date courante et la date de naissance de la
personne.
context Personne::age:Integer
derive : Date::current() date_de_naissance

319

Types et opration OCL


Le langage OCL possde un certain nombre de
types prdfinis et doprations prdfinies
sur ces types :

Boolean
Integer
Real
String

320

Types et opration OCL


Type

oprateurs

Boolean And, or, xor, not, implies, ifthenelseendif


Integer

+,-, *, /, abs(),

Real

+,-, *, /, abs(), floor(),

String

Concat(), size(), substring(),

321

Types et opration OCL


a

a and b

a or b

a xor b

a implies b

322

Types et opration OCL


not

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

Quelques oprations sur les


collections

- Opration
de base La syntaxe : collection->operation()

size() : nombre dlments


count() : nombre doccurrences
sum() : somme des lments
isEmpty() : est vide
notEmpty() : non vide
includes(el) : appartenance
excludes(el) : non appartenance
includesAll(col) : inclusion
excludesAll(col) : exclusion
326

Quelques oprations sur les


collections

select(cond) : retient
- Filtrage
- les lments qui vrifient la condition

reject(cond) : limine les lments qui vrifient la condition

any(cond) : retourne lun des lments qui vrifie la


condition

forAll(cond) : true si tous les lments vrifient la


condition

exists(cond) : true si au moins un lment vrifie la


condition

isUnique(exp) : true si une et une seule valeur de la


collection qui vrifie la condition

327

Opration ensembliste
- Set ou OrederedSet

union(ens) : union

- : diffrence (ens1 ens2)

including(el) : ajoute un lment

excluding(el) : retire un lment

328

Accs aux donnes de lobjet


courant
Pour faire rfrence une donne (attribut
ou opration) dun objet dsign par le
contexte :

1.
2.

Utiliser le nom de llment


Faire prcder le nom de llment du mot cl
self

329

Accs aux donnes de lobjet


courant
Exemple
Dans le contexte de la classe Compte :
Context Compte
Inv : solde > 0

Context Compte::debiter(somme : Real)


Pre : somme > 0
Post : self.solde = self.solde@pre - somme
330

Navigation 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

Navigation 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 :

employeur.adresse
socit.adresse
332

Navigation travers une


association
Lutilisation du rle est indispensable si :
1.

2.

Il existe plusieurs associations entre lobjet


dsign par le contexte et lobjet auquel on
dsire accder
Lassociation est rflexive

333

Navigation 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

Navigation travers une


association

Exemple : Type du rsultat

335

Navigation travers une


association qualifie
Dans une association qualifie, on utilise les
valeurs (les instances) des qualificatifs entre
crochets ([])
context Banque
inv : self.compte[8900].solde>0

336

Navigation vers une classe


association
Dans le contexte de Socit, self.poste.salaire:

salaire de tous les employs


Dans le contexte de Personne,
self.mariage[epouse].date : dates de mariages
des femmes

337

Navigation depuis une classe


association
context Poste
inv : self.employe.age>21
(ou aussi, self.personne.age>21)

338

Accs une mthode


redfinie

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 : oclAsType()

339

Accs une mthode


redfinie
Dans le contexte de B :
Self.f() : accs f() de B
Self.oclAsType(f()) : accs la
mthode de A

340