Vous êtes sur la page 1sur 206

Gnie logiciel

UML : Unified Modeling Language


A. Madani (abdellah_madani@yahoo.fr)

abdellah_madani@yahoo.fr

Gnie Logiciel
Plan
UML : Unified Modeling Language

Historique
Diagrammes de classes et d'objets
Diagrammes des cas d'utilisation
Autres diagrammes
UML et les bases de donnes (Mapping Objet
Relationnel)

abdellah_madani@yahoo.fr

Historique
Deux approches

Approche fonctionnelle

1960 fin 1970


l'important c'est les traitements
Sparation nette des donnes et traitements

Approche objet

1980 dbut 1990 : premires gnration


L'important c'est l'objet
Objet = donnes + traitements
abdellah_madani@yahoo.fr

Historique
Dbut des annes 1990

les premiers processus de dveloppement OO


apparaissent
prolifration des mthodes et notations taient la
cause de grande confusion :

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.

abdellah_madani@yahoo.fr

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
abdellah_madani@yahoo.fr

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
abdellah_madani@yahoo.fr

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

abdellah_madani@yahoo.fr

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,

abdellah_madani@yahoo.fr

Quest ce que UML ?


Apports de UML
favorise la communication entre :

dveloppeurs et futurs utilisateurs


analyse des besoins, spcification
quipes de conception et de dveloppement
conception

abdellah_madani@yahoo.fr

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.

abdellah_madani@yahoo.fr

10

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

abdellah_madani@yahoo.fr

Activit

Squence
Squence

Objets

11

Diagrammes d'UML
UML dfinit deux types de diagrammes, structurels
(statiques) et comportementaux (dynamiques)

Modlisation de la structure statique

diagramme de classes
diagramme dobjets
diagramme de composants
diagramme de dploiement

Modlisation du comportement dynamique

diagramme de cas d'utilisation


diagramme dtats
diagramme dactivits
diagramme de collaboration
diagramme de squence
abdellah_madani@yahoo.fr

12

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
abdellah_madani@yahoo.fr

13

Diagramme dUML
Cas dutilisation
Composants

Objets
Classes

Vue logique statique


(Structure des objets)

Vue Implmentation
(composants logiciels)

Vue externe
(fonctions systme)
Squence

Vue logique dynamique


(Comportement)

Vue dploiement
(Environnement
dimplantation)

Collaboration

tats transitions

Activits
abdellah_madani@yahoo.fr

Dploiement
14

UML
Diagrammes de classes

abdellah_madani@yahoo.fr

15

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.
abdellah_madani@yahoo.fr

16

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
un vnement : la commande n 2004-125

abdellah_madani@yahoo.fr

17

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,
abdellah_madani@yahoo.fr

18

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 avoir une valeur atomique

abdellah_madani@yahoo.fr

19

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 directes de la classe.

Nom dattribut
Type de lattribut
Valeur initiale (facultative)
abdellah_madani@yahoo.fr

20

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
abdellah_madani@yahoo.fr

21

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

abdellah_madani@yahoo.fr

= 10

22

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

abdellah_madani@yahoo.fr

23

Concept d'attribut
Window
-

taille
visibilit
taille_defaut
taille_max

:
:
:
:

Rectangle
boolean
Rectangle
Rectangle

= (100,100)
= true

Attributs d'instances

Attributs de classes

+ <<Constructor>> Window ()
+
afficher ()
+
cacher ()
+
getTaille_max ()
+
getTaille_defaut ()

:
:
:
:

void
void
Rectangle
Rectangle

abdellah_madani@yahoo.fr

Oprations d'instances
Oprations de classes

24

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 .
abdellah_madani@yahoo.fr

25

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
abdellah_madani@yahoo.fr

26

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
abdellah_madani@yahoo.fr

27

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

abdellah_madani@yahoo.fr

28

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.
abdellah_madani@yahoo.fr

29

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)

abdellah_madani@yahoo.fr

30

Concept de classes dobjets


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

= 100

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

abdellah_madani@yahoo.fr

31

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

abdellah_madani@yahoo.fr

32

Associations

Relation existant entre une, deux ou


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

abdellah_madani@yahoo.fr

33

Associations
Remarques
une association fonctionne dans les 2 sens
(bidirectionnelle)
termes associs : Nom, Sens de lecture,
degr (arit), Multiplicit, Rle et le
qualificateur

abdellah_madani@yahoo.fr

34

Associations
Nom et sens de lecture

Dcrit la nature (signification) de lassociation


Montre la direction de lecture de lassociation

abdellah_madani@yahoo.fr

35

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

abdellah_madani@yahoo.fr

36

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

abdellah_madani@yahoo.fr

37

Associations
Une association peut avoir des attributs = classe-association

abdellah_madani@yahoo.fr

38

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

abdellah_madani@yahoo.fr

39

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

abdellah_madani@yahoo.fr

40

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,

abdellah_madani@yahoo.fr

41

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

abdellah_madani@yahoo.fr

42

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.

abdellah_madani@yahoo.fr

43

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
Compte

Banque

NCompte
1

abdellah_madani@yahoo.fr

44

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

abdellah_madani@yahoo.fr

45

Agrgation

Les parties (les composants) sont sparables


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

abdellah_madani@yahoo.fr

46

Agrgation
Titre

0..1

Un agrgat (compos) peut tre multiple.

1..1
E-Mail

Destinataire

Fichier

1..*

0..*

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

abdellah_madani@yahoo.fr

47

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).
abdellah_madani@yahoo.fr

48

Composition
Commune

Agrgat
Agrgat ne peut pas tre multiple
1..1

1..1
1..*

1..*
Mairie

Conseil municipal

1..*
Sevice

Agrgs
la suppression dun objet agrgat entrane la suppression des
objets agrgs

abdellah_madani@yahoo.fr

49

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
abdellah_madani@yahoo.fr

50

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)
abdellah_madani@yahoo.fr

51

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, mais pas des attributs.

abdellah_madani@yahoo.fr

52

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

abdellah_madani@yahoo.fr

53

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.
abdellah_madani@yahoo.fr

54

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 55
abdellah_madani@yahoo.fr

Gnralisation / Spcialisation
une classe peut hriter de plusieurs super-classes
= hritage multiple

abdellah_madani@yahoo.fr

56

Gnralisation / Spcialisation
polymorphisme = oprations de mme nom,
polymorphisme = comportement spcifique

abdellah_madani@yahoo.fr

57

Contraintes sur les associations

Concept avanc des associations


Il est possible dattribuer toutes sortes de
contraintes une association
Les contraintes sont reprsentes par un
label entre accolades

abdellah_madani@yahoo.fr

58

Contraintes sur les associations

Les contraintes (prdfinies) souvent utilises :

{ordonn}
{sous ensemble}
{xor}

abdellah_madani@yahoo.fr

59

Contraintes sur les associations


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

Compte
1

0..*
{Ordonn}

Les comptes dune personne sont ordonns

abdellah_madani@yahoo.fr

60

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

abdellah_madani@yahoo.fr

61

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

abdellah_madani@yahoo.fr

62

Exemple de diagramme de classes


(Distributeur Automatique de Banque : DAB)

abdellah_madani@yahoo.fr

63

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

abdellah_madani@yahoo.fr

64

UML
Diagrammes de cas
d'utilisation

abdellah_madani@yahoo.fr

65

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.

abdellah_madani@yahoo.fr

66

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

abdellah_madani@yahoo.fr

67

Diagrammes des cas d'utilisation


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

abdellah_madani@yahoo.fr

68

Acteurs

UML nemploi pas le terme dutilisateur mais


dacteur.
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)
Le terme acteur ne dsigne pas seulement
des utilisateurs humains mais galement les
autres systmes (machines, programmes,
).
abdellah_madani@yahoo.fr

69

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

abdellah_madani@yahoo.fr

70

Acteurs
Peut tre reprsent de deux manires
diffrentes :

Petit personnage (stick man)


Nom Acteur

Classe strotype

abdellah_madani@yahoo.fr

<<Acteur>>
Nom Acteur

71

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, )
abdellah_madani@yahoo.fr

72

Acteurs
<<acteur>>
Site Web de l'tablissement

Secrtaire

Systme de Gestion
Scolaire

Etudiant
<<acteur>>
Imprimante

abdellah_madani@yahoo.fr

73

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.
abdellah_madani@yahoo.fr

74

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

abdellah_madani@yahoo.fr

75

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
abdellah_madani@yahoo.fr

76

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.

abdellah_madani@yahoo.fr

77

Cas d'utilisation
Un cas d'utilisation est reprsent par une
ellipse en trait plein, contenant son nom.

Nom Cas Utilisation

abdellah_madani@yahoo.fr

78

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.

abdellah_madani@yahoo.fr

79

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

abdellah_madani@yahoo.fr

80

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.

abdellah_madani@yahoo.fr

81

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

abdellah_madani@yahoo.fr

82

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

abdellah_madani@yahoo.fr

83

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.

abdellah_madani@yahoo.fr

84

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.
abdellah_madani@yahoo.fr

85

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
abdellah_madani@yahoo.fr

86

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.

abdellah_madani@yahoo.fr

87

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

abdellah_madani@yahoo.fr

88

Relation d'extension

Le cas d'utilisation de base (destination) peut


fonctionner tout seul, mais il peut galement
tre complt par un autre cas d'utilisation,
sous certaines conditions, et uniquement
certains points particuliers de son flot
d'vnements (points d'insertion).
On utilise principalement cette relation pour
sparer le comportement optionnel (les
variantes) du comportement obligatoire.
abdellah_madani@yahoo.fr

89

Relation d'extension
Exemple :
Au moment de l'authentification, il se peut que
le guichet retient la carte.

S'authentifier
Retenir la carte

<<extend>>

abdellah_madani@yahoo.fr

90

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.

abdellah_madani@yahoo.fr

91

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.

abdellah_madani@yahoo.fr

92

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.

abdellah_madani@yahoo.fr

93

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.
abdellah_madani@yahoo.fr

94

Relation d'hritage : Exemple

Reserver voyage

Rserver voyage par tlphone

Rserver voyage par Internet

abdellah_madani@yahoo.fr

95

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.

abdellah_madani@yahoo.fr

96

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.

abdellah_madani@yahoo.fr

97

Relations entre cas dutilisation


Virement

<<extend>>

Vrification solde compte

Montant > 500 DH

<<include>>
Virement par Internet

Virement sur place


Identification

Client distant

Client local

abdellah_madani@yahoo.fr

98

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.

abdellah_madani@yahoo.fr

99

Diagramme des cas d'utilisation


Dposer de l 'argent

Reteni r l a carte

Cl i ent

<<i ncl ude>>

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 ci en
Rparer

abdellah_madani@yahoo.fr

100

tapes de construction du diagramme


des cas d'utilisation
Pour modliser le diagramme des cas d'utilisation, il faut :
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)

abdellah_madani@yahoo.fr

101

UML

Diagrammes de squences

abdellah_madani@yahoo.fr

102

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
abdellah_madani@yahoo.fr

103

Diagramme de squences
Obj et_1

Obj et_2

Obj et_3

Message_1

Message_2

Li gne de vi e de
l 'obj et

abdellah_madani@yahoo.fr

104

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

abdellah_madani@yahoo.fr

105

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

abdellah_madani@yahoo.fr

106

Diagramme de squences : Exemple


Client

Compte

Compte
- NCompte : String
- Solde
: float

dposer(somme)

+ <<Constructor>> Compte (int n, float s)


+
dposer (float somme) : void
+
retirer (float somme) : float
+
consulter ()
: float

solde+=somme
solde actuel

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)

abdellah_madani@yahoo.fr

107

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

abdellah_madani@yahoo.fr

108

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

abdellah_madani@yahoo.fr

109

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
abdellah_madani@yahoo.fr

110

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

Objet_2

Message_1

abdellah_madani@yahoo.fr

111

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

Obj et_1

Message_1 (20 secondes)

abdellah_madani@yahoo.fr

112

Message minut (Timeout) : Exemple


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

Porte

ouvrir (2 secondes)

fermer

abdellah_madani@yahoo.fr

113

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

Obj et_1

Message_1

abdellah_madani@yahoo.fr

114

Message synchrone (appel de procdure) :


Exemple
Communication client serveur : Sockets
Client

Serveur

Sollitation
Acceptation
Requte
Rponse

abdellah_madani@yahoo.fr

115

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

abdellah_madani@yahoo.fr

116

Message rcursif

Appel aussi message rflexive


Message envoy dun objet vers lui-mme.
Objet_1

Message_1

abdellah_madani@yahoo.fr

117

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

abdellah_madani@yahoo.fr

118

Cration et destruction dobjets


Un message peut crer ou dtruire un objet
Objet_1

Objet_3
Message_1

Objet_2

Cration dobjet
Message_2

Objet cr au cours de lexcution du scnario

Destruction dobjet

Objet dtruit dans un scnario


abdellah_madani@yahoo.fr

119

Structures de contrle
Le diagramme de squences peut inclure un
certain nombre de structures
Branchements (tests)
Rptitions (itrations, boucles)

abdellah_madani@yahoo.fr

120

Les test (branchements)


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

Objet_2

Objet_3

[condition]: Message

abdellah_madani@yahoo.fr

121

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
Systme

Utilisteur

Prsente son badge

Vrifier droit d'accs


[OK]voyant vert
ouvrir porte

abdellah_madani@yahoo.fr

122

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

abdellah_madani@yahoo.fr

123

Diagrammes de classes : Exemple


Cl i ent

Vendeur

Catal ogue

dem ande de pri x


consul te l e catal ogue
donne l e pri x de base

s'tonne

se pl ai nt

propose un autre pri x

rcupre l e produi t

abdellah_madani@yahoo.fr

124

UML

Diagrammes de collaboration

abdellah_madani@yahoo.fr

125

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
abdellah_madani@yahoo.fr

126

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

abdellah_madani@yahoo.fr

127

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
abdellah_madani@yahoo.fr

128

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

abdellah_madani@yahoo.fr

:Appel

129

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

abdellah_madani@yahoo.fr

130

Diagrammes de collaboration

Mmes types contraintes que pour les


diagrammes de squence

Itration : *[condition]
Conditions : [condition]

Exemple : rservation darticles


1. commander(n, item)
:Client

2. vrifier(n, item)

:Vendeur
4. livrer(n, item)

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

abdellah_madani@yahoo.fr

131

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

abdellah_madani@yahoo.fr

132

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

abdellah_madani@yahoo.fr

133

Exemple : Ascenseur (Squence)

abdellah_madani@yahoo.fr

134

Exemple : Ascenseur (Collaboration)

abdellah_madani@yahoo.fr

135

UML

Diagramme tat-transition

abdellah_madani@yahoo.fr

136

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

abdellah_madani@yahoo.fr

137

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

abdellah_madani@yahoo.fr

138

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
angles arrondis
Fentre
Affiche

- ID
: int
- Visible : boolean

abdellah_madani@yahoo.fr

= True

139

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

abdellah_madani@yahoo.fr

140

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

abdellah_madani@yahoo.fr

141

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]

abdellah_madani@yahoo.fr

Etat2

142

Formalisme et exemple
Etat1

Employ recrut

Evnement [Condition]

Prise fonction [Date embauche chue]

abdellah_madani@yahoo.fr

Etat2

Employ en activit

143

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

abdellah_madani@yahoo.fr

144

Activit

Opration d'une certaine dure, qui peut tre


interrompue
Associe un tat d'un objet
Reprsente dans l'tat prcde par la
notation "do/"

abdellah_madani@yahoo.fr

145

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

abdellah_madani@yahoo.fr

146

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

abdellah_madani@yahoo.fr

147

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

abdellah_madani@yahoo.fr

148

Exemple (Objet personnel)


L'objet Personnel se caractrise par trois tats :
En prvision d'arrive, si date prvisionnelle >= date d'aujourd'hui
En activit, pour un personnel ayant une date d'arrive renseigne
Parti, pour un personnel ayant une date de dpart renseigne
En prvision d'arrive

Prise fonction
En activit
do / Renseigner la date d'arrive l'agence
Dpart de l'agence

Partie
do / Renseigner la date de dpart de la personne

abdellah_madani@yahoo.fr

149

Exemple (Feu de signalisation)


Feu
- ID
: int
- Couleur : {Vert, Orange, Rouge}

Orange

Vert

Rouge

abdellah_madani@yahoo.fr

150

UML

Diagramme d'activits

abdellah_madani@yahoo.fr

151

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
abdellah_madani@yahoo.fr

152

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

153

Comportement conditionnel

Appel aussi le branchement


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

abdellah_madani@yahoo.fr

154

Comportement conditionnel : Exemple


Demander l'addition

[Prix<=Somme disponible]

[Else]

Rgler la note

Faire la vaisselle

abdellah_madani@yahoo.fr

155

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
abdellah_madani@yahoo.fr

156

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

abdellah_madani@yahoo.fr

157

Itration : Exemple

Recevoi r commande

Vri fi er arti cl e

Commander arti cl e

[s'i l reste des arti cl es]

[pl us d'arti cl e]

abdellah_madani@yahoo.fr

158

Swimlanes

Extension des diagrammes d'activits


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

abdellah_madani@yahoo.fr

159

Rsum notation

abdellah_madani@yahoo.fr

160

Exemple rcapitulatif

abdellah_madani@yahoo.fr

161

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]

Dbi ter carte crdi t

Prparer commande

Expdi er commande

Poster facture

abdellah_madani@yahoo.fr

162

Exercice 1
Reprsenter les tats suivants sous forme de
diagramme d'activit :
Vrification commande
Enregistrement commande
Rejet commande
Informer erreur au client

abdellah_madani@yahoo.fr

163

Exercice 1 : solution

Vrifier commande

Valide
[oui]
Enregistrement commande

[non]
Rejet commande

Informer erreur au client

abdellah_madani@yahoo.fr

164

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

abdellah_madani@yahoo.fr

165

Exercice 2 : solution

abdellah_madani@yahoo.fr

166

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

abdellah_madani@yahoo.fr

167

Exercice 3 : solution

abdellah_madani@yahoo.fr

168

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.
abdellah_madani@yahoo.fr

169

Exercice 4 : solution

abdellah_madani@yahoo.fr

170

UML

De UML vers le codage (C++ ou Java)

abdellah_madani@yahoo.fr

171

Correspondance Objet Relationnel

Cette partie traite le passage de la


conception Objet (faite par UML) vers :

le codage en Objet : en C++ ou en Java

Ce passage concerne

Classes, instances de classes


Attributs et oprations de classes ou d'instances
Relations entres classes : associations,
agrgation, composition et gnralisation
spcialisation

abdellah_madani@yahoo.fr

172

Classes, instances, attributs et oprations


en Objet
Objet (UML)

C++

Java

Classe

Classe

Classe

Instance

Instance

Instance

Attribut

Membre

Attribut

Opration

Fonction

Mthode

abdellah_madani@yahoo.fr

173

Attributs et oprations de classe ou


d'instance en Objet
Objet (UML)

C++

Java

Attribut et opration de
classe

Soulign

static

static

Attribut et opration
d'instance

abdellah_madani@yahoo.fr

174

Traduction d'une classe

En Java

class Compte{
private int NCompte;
private float Solde;
public Compte(int NC, float S){

}
public void deposer(float Solde){

Compte
}
- NCompte : int
: float
public String avoirSolde(){ - Solde
+ <<Constructor>> Compte (int NCompte, float Solde)

+
deposer (float Solde)
}
+
retirer (float Solde)

+
abdellah_madani@yahoo.fr

avoirSolde ()

: void
: float
: String
175

Gnralisation/spcialisation en Objet

La relation de gnralisation/spcialisation
entre classes est la plus immdiate
Elle est traduite par une relation d'hritage
dans l'implmentation
Chaque langage utilise sa propre syntaxe :

Class A extends B{} en Java


Class A : public B{ } en C++

abdellah_madani@yahoo.fr

176

Gnralisation/spcialisation en Objet
En Java :
class Compte{}
class CompteEpargne
extends Compte{}
En C++ :
class Compte{};
class CompteEpargne :
public Compte{};

Compte

CompteEpargne

abdellah_madani@yahoo.fr

177

Associations en Objet

Plusieurs faons pour traduire les


associations UML en Objet
Une association UML se traduira par un ou
plusieurs attributs : pointeurs ou rfrences,
vers un ou plusieurs objets
On distingue trois cas

Association un un
Association un plusieurs
Association plusieurs plusieurs
abdellah_madani@yahoo.fr

178

Associations en Objet
(Cas d'une association un--un)

Les deux rles de l'association seront traduits


par :

des pointeurs en C++


des rfrences en Java

Les pointeurs ou rfrences peuvent tre


ajouts soit dans l'une des classes soit dans
les deux classes (suivant la navigabilit)

abdellah_madani@yahoo.fr

179

Associations en Objet
(Cas d'une association un--un)
En C++ :
class Pays{

Capitale *nom_cap;

};
class Capitale{

};

En Java :
class Pays{

Capitale nom_cap;

}
class Capitale{

}
abdellah_madani@yahoo.fr

180

Traduction des associations en Objet


(Cas d'une association un--un)
En C++ :
class Pays{

};
class Capitale{

Pays *nom_pays;

};

En Java :
class Pays{

}
class Capitale{

Pays nom_pays;

}
abdellah_madani@yahoo.fr

181

Traduction des associations en Objet


(Cas d'une association un--un)
En C++ :
class Pays{

En Java :
class Pays{

Capitale *nom_cap;

Capitale nom_cap;

};
class Capitale{

}
class Capitale{

Pays *nom_pays;

Pays nom_pays;

};

abdellah_madani@yahoo.fr

182

Traduction des associations en Objet


(Cas d'une association un--plusieurs)
Dans le code objet, une association peut tre
reprsente par :
une variable dinstance reprsentant "lautre"
objet avec lequel se fait lassociation
une variable dinstance de type collection
reprsentant tous les autres objets avec
lesquels se fait lassociation

abdellah_madani@yahoo.fr

183

Associations en Objet
(Cas d'une association un--plusiuers)
Dans le cas o nous avons besoin d'un attribut
pouvant contenir un nombre quelconque
d'lments : Un tableau n'est pas adapt car
il possde une taille qui limite le nombre
d'lments
En C++, on utilise un pointeur sur un pointeur
En Java, on prfre utiliser une collection
(Vector, Iterator, )

abdellah_madani@yahoo.fr

184

Associations en Objet
(Cas d'une association un--plusiuers)
En C++ :
Class Personne{

Compte **a_comme_compte;

}
Classe Compte{

En Java :
Class Personne{

Vector a_comme_compte;

}
Class Compte{

abdellah_madani@yahoo.fr

185

Associations en Objet
(Cas d'une association un--plusiuers)
En C++ :
Class Personne{

}
Classe Compte{

Personne *a_pour_prop;

En Java :
Class Personne{

}
Class Compte{

Personne a_pour_prop;

abdellah_madani@yahoo.fr

186

Associations en Objet
(Cas d'une association un--plusiuers)
En C++ :
Class Personne{

Compte **a_comme_compte;

}
Classe Compte{

Personne *a_pour_prop;

En Java :
Class Personne{

Vector a_comme_compte;

}
Class Compte{

Personne a_pour_prop;

abdellah_madani@yahoo.fr

187

Associations en Objet
(Association plusieurs--plusieurs)

On distingue ici deux cas :

Association porteuse d'informations (classe


association) : la classe association est
implmente par une classe contenant en plus de
ses informations, les rfrences ou les pointeurs
des classes associes
Association non porteuse d'informations : deux
solutions :

les rfrences ou pointeurs se migrent vers l'une ou les


deux classes associes
cration dune classe contenant les rfrences ou les
pointeurs des classes associes
abdellah_madani@yahoo.fr

188

Associations en Objet
(Association plusieurs--plusieurs)
class Detail{
private Article Ref;
private Commandes NBC;
private int Qte;

abdellah_madani@yahoo.fr

189

Associations en Objet
(Association plusieurs--plusieurs)
class Responsable{

Class Projet{

private Projet NP;


private Etudiant Code;
.
}

private Etudiant Code;

class Etudiant{

private Projet NP;

}
abdellah_madani@yahoo.fr

190

Agrgation et composition en Objet


En C++ :
L'agrgation est
implmente comme
l'association
La composition sera
traduite par un attribut
de composant dans la
classe compose

En Java :
L'agrgation,
composition et
association sont
traduites de la mme
manire

abdellah_madani@yahoo.fr

191

UML

De UML vers le modle relationnel

abdellah_madani@yahoo.fr

192

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

abdellah_madani@yahoo.fr

193

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

abdellah_madani@yahoo.fr

194

Traduction d'une classe

En Relationnel

Compte(NCompte, Solde)

Compte

En SQL

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

abdellah_madani@yahoo.fr

195

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

abdellah_madani@yahoo.fr

196

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.

abdellah_madani@yahoo.fr

197

Gnralisation/spcialisation en
Relationnel

abdellah_madani@yahoo.fr

198

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

abdellah_madani@yahoo.fr

199

Associations en Relationnel
(Association un--un)

1re Solution

Pays(IdPays, NomP,#IdCapitale)
Capitales(IdCapitale, NomC, #IdPays)

2ime Solution

Pays(IdPays, NomP, NomC)

abdellah_madani@yahoo.fr

200

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))
abdellah_madani@yahoo.fr

201

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

abdellah_madani@yahoo.fr

202

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)

)
abdellah_madani@yahoo.fr

203

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

abdellah_madani@yahoo.fr

204

Traduction des associations en Relationnel


(Association plusieurs--plusieurs)
En Relationnel
Articles(Ref, Des, PU)
Commandes(NBC, DateC, Client)
Dtails(#NBC, #Ref, Qt)

abdellah_madani@yahoo.fr

205

Traduction des associations en Relationnel


(Association plusieurs--plusieurs)
En SQL
1. create table Article(Ref integer primary key, )
2. create table Cde(NBC integer primary key, )
3. create table Detail(NBC integer, Ref integer,,
constraint PK primary key(NBC, Ref),
constraint FK1 foreign key(NBC) references cdes(NBC),
Constraint FK1 foreign key(NBC) references cdes(NBC))

abdellah_madani@yahoo.fr

206