You are on page 1of 153

Modlisation UML

Christine Solnon
INSA de Lyon - 3IF

2013 - 2014

1/140 .

Introduction

Positionnement de lUE / IF
Domaines denseignement du dpartement IF :
Systme dInformation
Rseaux
Architectures matrielles
Logiciel Systme
Mthodes et Outils Mathmatiques
Formation gnrale
Dveloppement logiciel
Units dEnseignement du domaine Dveloppement logiciel :
C++ (3IF)
Gnie logiciel (3IF)
Modlisation UML (3IF)
Qualit logiciel (4IF)
Grammaires et langages (4IF)
Ingnierie des IHM (4IF)
Mthodologie de dveloppement objet (4IF)
2/140 .

Introduction

Rfrentiel des comptences


Utiliser des diagrammes UML pour modliser un objet dtude
Interprter un diagramme UML donn
; IF3-UML, IF4-DevOO, IF4-IHM

Concevoir un diagramme UML modlisant un objet dtude


; IF3-UML, IF3-C++, IF3-DASI, IF4-DevOO, IF4-IHM, IF4-LG

Vrifier la cohrence de diffrents diagrammes modlisant un mme


objet dtude
; IF3-UML, IF4-DevOO, IF4-LG

Concevoir larchitecture dun logiciel orient objet


Structurer un logiciel en paquetages et classes faiblement coupls et
fortement cohsifs
; IF3-UML, IF3-C++, IF3-DASI, IF4-DevOO, IF4-LG

Utiliser des Design Patterns

; IF3-UML, IF3-C++, IF3-DASI, IF4-DevOO, IF4-LG

3/140 .

Introduction

Organisation

6 sances de cours
du 7 au 28 novembre
4 sances de travaux dirigs (TD)
du 18 novembre au 18 dcembre
1 devoir surveill (DS)
le 23 janvier

4/140 .

Introduction

Pour en savoir plus...


Sur la modlisation en gnral :
Modles et Mtamodles
Guy Caplat
Sur le mta-modle de rfrence dUML :
http ://www.omg.org/uml
Sur UML et la modlisation objet :
Modlisation Objet avec UML
Pierre-Alain Muller, Nathalie Gaertner
; Chapitre sur la notation tlchargeable sur le site dEyrolles

Sur les design patterns et la conception oriente objet :


UML 2 et les design patterns
Craig Larman
Tte la premire : Design Patterns
Eric Freeman & Elizabeth Freeman
...et plein dautres ouvrages DocINSA !

5/140 .

Introduction

Introduction la modlisation

Plan du cours

Introduction
Introduction la modlisation
Introduction UML

Modliser la structure avec UML

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

6/140 .

Introduction

Introduction la modlisation

Quest-ce quun modle ?


Modle = Objet conu et construit (artefact) :
Pour reprsenter un sujet dtudes

Reprsentativit

Exemple de sujet : les circuits lectriques


Sappliquant plusieurs cas de ce sujet dtude

Gnricit

Exemple de cas : des mesures (tension, intensit, ...) sur des circuits
Incarnant un point de vue sur ces cas

Abstraction

Exemple de point de vue : U = RI


; Abstraction de la longueur des fils, la forme du circuit, ...
Un mme sujet dtudes peut avoir plusieurs modles
; Chaque modle donne un point de vue diffrent sur le sujet
7/140 .

Introduction

Introduction la modlisation

Langages de modlisation
Langages utiliss pour exprimer un modle :
Langues naturelles : qui voluent hors du contrle dune thorie
Ex : Franais, Anglais, ...
Langages artificiels : conus pour des usages particuliers
Langages formels : syntaxe dfinie par une grammaire
Ex : Logique, langages informatique (C, Java, SQL, ...), ...
Pouvoir dexpression dun langage :
; Ensemble des modles que lon peut exprimer

Le choix du langage influence la conception du modle...


...et donc la perception du sujet dtudes !

Interprtation dun langage :


; Procdure pour comprendre un modle (Smantique)

Modle ambig : Plusieurs interprtations diffrentes possibles


Modle excutable : Interprtation excutable par une machine
8/140 .

Introduction

Introduction la modlisation

Langages de modlisation bass sur les graphes


Dfinition
Un graphe est dfini par un couple (N, A) tel que
N est un ensemble de nuds (aussi appels sommets)
; Composants du modle
A N N est un ensemble darcs
; Relation binaire entre les composants du modle

Nuds et arcs peuvent tre tiquets par des proprits


La modlisation par les graphes date de [Euler 1735]

[Image emprunte Wikipedia]

9/140 .

Introduction

Introduction UML

Plan du cours

Introduction
Introduction la modlisation
Introduction UML

Modliser la structure avec UML

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

10/140 .

Introduction

Introduction UML

Historique dUML

[Image emprunte Wikipedia]

11/140 .

Introduction

Introduction UML

UML et lOMG
OMG = Object Management Group (www.omg.org) :
Fond en 1989 pour standardiser et promouvoir lobjet
Version 1.0 dUML (Unified Modeling Language) en janvier 1997
Version 2.5 en octobre 2012
Dfinition dUML selon lOMG :
Langage visuel ddi la spcification, la construction et la
documentation des artefacts dun systme logiciel
LOMG dfinit le mta-modle dUML
; Syntaxe et interprtation en partie formalises
Attention : UML est un langage... pas une mthode
; Mthode dans le cours 4IF Dveloppement Orient Objet"

12/140 .

Introduction

Introduction UML

3 faons dutiliser UML selon [Fowler 2003]


(On y reviendra en 4IF...)

Mode esquisse (mthodes Agile) :


Diagrammes tracs la main, informels et incomplets
; Support de communication pour concevoir les parties critiques
Mode plan :
Diagrammes formels relativement dtaills
Annotations en langue naturelle
; Gnration dun squelette de code partir des diagrammes
; Ncessit de complter le code pour obtenir un excutable
Mode programmation (Model Driven Architecture / MDA) :
Spcification complte et formelle en UML
; Gnration automatique dun excutable partir des diagrammes
; Limit des applications bien particulires
; Un peu utopique (...pour le moment ?)

13/140 .

Introduction

Introduction UML

Diffrents modles UML


UML peut tre utilis pour dfinir de nombreux modles :
Modles descriptifs vs prescriptifs
Descriptifs ; Dcrire lexistant (domaine, mtier)
Prescriptifs ; Dcrire le futur systme raliser

Modles destins diffrents acteurs

Pour lutilisateur ; Dcrire le quoi


Pour les concepteurs/dveloppeurs ; Dcrire le comment

Modles statiques vs dynamiques

Statiques ; Dcrire les aspects structurels


Dynamiques ; Dcrire comportements et interactions
Les modles sont dcrits par des diagrammes (des graphes)
; Chaque diagramme donne un point de vue diffrent sur le systme

14/140 .

Introduction

Introduction UML

14 types de diagrammes dUML 2.2

...et un langage pour exprimer des contraintes : OCL

15/140 .

Introduction

Introduction UML

Diagrammes UML : Points de vue sur le systme

[Image emprunte Muller et Gaertner]

16/140 .

Introduction

Introduction UML

Notations communes tous les diagrammes (1/2)


Strotypes et mots-cls (on y reviendra en 4IF...) :
Dfinition dune utilisation particulire dlments de modlisation
; Interprtation (smantique) particulire
Notation : nomDuStrotype ou {nomDuMotCl} ou icone

Nombreux strotypes et mots-cls prdfinis : interface,


invariant, create, actor, {abstract}, {bind}, {use}...
Valeurs marques (on y reviendra aussi en 4IF...) :
Ajout dune proprit un lment de modlisation
Notation : { nom1 = valeur1 , ..., nomn = valeurn }
Valeurs marques prdfinies (ex. : derived : Bool)
ou personnalises (ex. : auteur : Chane)
Commentaires :
Information en langue naturelle
Notation : o- - - - - - - - - - - - - - - - - - -

17/140 .

Introduction

Introduction UML

Notations communes tous les diagrammes (2/2)


Relations de dpendance :
Notation : [source]- - - - - - - - - >[cible]
; Modification de la source peut impliquer une modification de la cible

Nombreux strotypes prdfinis : bind, realize, use,


create, call, ...
Contraintes (on y reviendra aussi en 4IF) :
Relations entre lments de modlisation
; Proprits qui doivent tre vrifies
; Attention : les contraintes nont pas deffet de bord

Notation : o- - - - - - - -{ contrainte }
3 types de contraintes :
Contraintes prdfinies : disjoint, ordered, xor, ...
Contraintes exprimes en langue naturelle
Ex. : temps dexcution infrieur 10 ms
Contraintes exprimes avec OCL (Object Constraint Language)
Ex. : context Pile inv : self.nbElts >= 0
Strotypes : invariant, prcondition, postcondition

18/140 .

Modliser la structure avec UML

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

19/140 .

Modliser la structure avec UML

Point de vue statique sur le systme


Dcrire la structure du systme en termes de :
Composants du systme
; Objets, Classes, Paquetages, Composants, ...
Relations entre ces composants
; Spcialisation, Association, Dpendance, ...

; Pas de facteur temps

Diffrents diagrammes statiques que nous allons voir :


Diagrammes dobjets (Cours)
Diagrammes de classes (Cours + TD)
Diagrammes de paquetage (Cours + TD)
Diagrammes de composants (Cours)
Diagrammes de dploiement (Cours)

20/140 .

Modliser la structure avec UML

Structuration Oriente Objet

Plan du cours
1

Introduction

Modliser la structure avec UML


Structuration Oriente Objet
Diagrammes dobjets
Diagrammes de classes
Diagrammes de paquetage
Diagrammes de composants
Diagrammes de dploiement

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

21/140 .

Modliser la structure avec UML

Structuration Oriente Objet

Pourquoi une structuration oriente objet ?


Unicit et universalit du paradigme
Rduire le dcalage entre monde rel et logiciel
; Objets rels Objets conceptuels Objets logiciels
Rutilisabilit et volutivit facilites par diffrents mcanismes
Encapsulation, Modularit, Abstraction, Polymorphisme, Hritage
; Faible couplage inter-objets / Forte cohsion intra-objet
Paradigme qui arrive maturit
Bibliothques de classes, Design patterns, UML, Mthodologies de
dveloppement (UP, Agile, XP, ...), ...
; Environnements de dveloppement intgrs (IDE)

22/140 .

Modliser la structure avec UML

Structuration Oriente Objet

Quest-ce quun objet ?


Objet = Etat + Comportement + Identit
Etat dun objet :
Ensemble de valeurs dcrivant lobjet
; Chaque valeur est associe un attribut (proprit)
; Les valeurs sont galement des objets ( liens entre objets)
Comportement dun objet :
Ensemble doprations que lobjet peut effectuer
Chaque opration est dclenche par lenvoi dun message
; Excution dune mthode
Identit dun objet :
Permet de distinguer les objets indpendamment de leur tat
; 2 objets diffrents peuvent avoir le mme tat
Attribue implicitement la cration de lobjet
; Lidentit dun objet ne peut tre modifie

Attention : identit 6= nom de la variable qui rfrence lobjet

23/140 .

Modliser la structure avec UML

Structuration Oriente Objet

Quest ce quune classe dobjets ?


Classe = regroupement dobjets similaires (appels instances)
Toutes les instances dune classe ont les mmes attributs et oprations
; Abstraction des caractristiques non communes
Classes sans instance
Classes abstraites :
; Certaines oprations peuvent tre abstraites/virtuelles (non dfinies)
Interfaces :
; Pas dattribut et toutes les oprations sont abstraites/virtuelles
Relation de spcialisation/gnralisation entre classes
Une classe A est une spcialisation dune classe B si tout attribut/opration
de B est galement attribut/opration de A
Implmentation par hritage

24/140 .

Modliser la structure avec UML

Diagrammes dobjets

Plan du cours
1

Introduction

Modliser la structure avec UML


Structuration Oriente Objet
Diagrammes dobjets
Diagrammes de classes
Diagrammes de paquetage
Diagrammes de composants
Diagrammes de dploiement

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

25/140 .

Modliser la structure avec UML

Diagrammes dobjets

Diagrammes dobjets
Objectif : Reprsenter les objets et leurs liens un instant donn
Utilisation : documenter des cas de test, analyser des exemples, ...
Moyen : Graphe
Nuds du graphe = Objets
Possibilit de supprimer le nom, la classe et/ou
les attributs (objet anonyme, non typ ou dtat
inconnu)

nomObjet : ClasseObjet
nomAttr_1 = val_1
nomAttr_2 = val_2
...

Artes du graphe = Liens entre objets


Lien binaire : entre 2 objets
Lien n-aire : entre n objets
Possibilit de nommer les liens et les rles
Correspondance entre liens et attributs

o1 : C1

o2 : C2

o1 : C1

o2 : C2
o3 : C3

26/140 .

Modliser la structure avec UML

Diagrammes dobjets

Exemple de diagramme dobjets

[Image emprunte J.-M. Jezequel]

27/140 .

Modliser la structure avec UML

Diagrammes dobjets

Au travail !

Pierre, Paul, Jacques, Marie et Anne sont tudiants au dpartement IF.


Robert et Suzie sont enseignants au dpartement IF.
Robert enseigne le C et le rseau ;
Suzie enseigne langlais, les math et le Java.
Pierre, Paul et Marie suivent les cours de C, de rseau et Java ;
Jacques et Anne suivent les cours de C, math et anglais.

28/140 .

Modliser la structure avec UML

Diagrammes de classes

Plan du cours
1

Introduction

Modliser la structure avec UML


Structuration Oriente Objet
Diagrammes dobjets
Diagrammes de classes
Diagrammes de paquetage
Diagrammes de composants
Diagrammes de dploiement

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

29/140 .

Modliser la structure avec UML

Diagrammes de classes

Abstraction dun ensemble de diagrammes dobjets

[Image emprunte J.-M. Jezequel]

30/140 .

Modliser la structure avec UML

Diagrammes de classes

Diagrammes de classes
Un diagramme de classes est un graphe :
Nud du graphe = Classe
; Abstraction dun ensemble dobjets

Arc du graphe = Relation entre des classes :


Relation dassociation
; Abstraction dun densemble de liens entre objets
Relation de gnralisation / spcialisation
; Factorisation de proprits communes plusieurs classes
Trs nombreuses utilisations, diffrents niveaux :
Pendant la capture des besoins : Modle du domaine
; Classes = Objets du domaine

Pendant la conception/implmentation : Modle de conception


; Classes = Objets logiciels

31/140 .

Modliser la structure avec UML

Diagrammes de classes

Reprsentation UML des classes


Rectangle compos de compartiments :
Compartiment 1 : Nom de la classe (commence par une majuscule, en gras)
Compartiment 2 : Attributs
Compartiment 3 : Oprations
Possibilit dajouter des compartiments (exceptions, ...)
Diffrents niveaux de dtail possibles :
; Possibilit domettre attributs et/ou oprations
NomClasse1

NomClasse2

attr1 : Chaine
attr2 : Entier
...

attr1
attr2

NomClasse3

op1(p1:Entier) : Entier
op2() : Chaine
...

32/140 .

Modliser la structure avec UML

Diagrammes de classes

Reprsentation UML des attributs


Format de description dun attribut :
[Vis] Nom [Mult] [":" TypeAtt] ["=" Val] [Prop]
Vis : + (public), - (priv), # (protg), (package)
Mult : "[" nbElt "]" ou "[" Min .. Max "]"
TypeAtt : type primitif (Entier, Chane, ...) ou classe
Val : valeur initiale la cration de lobjet
Prop : {gel}, {variable}, {ajoutUniquement}, ...
Attributs de classe (statiques) souligns
Attributs drivs prcds de "/"
Exemples :
# onOff : Bouton
- x : Rel
coord[3] : Rel

+ pi : rel = 3.14 {gel}


inscrits[2..8] : Personne
/age : Entier

33/140 .

Modliser la structure avec UML

Diagrammes de classes

Reprsentation UML des oprations


Format de description dune opration :
[Visibilit] Nom ["(" Arg ")"] [":" Type]
Visibilit : + (public), - (priv), # (protg)
Arg : liste des arguments selon le format
[Dir] NomArgument : TypeArgument
o Dir = in (par dfaut), out, ou inout
Type : type de la valeur retourne (type primitif ou classe)
Oprations abstraites/virtuelles (non implmentes) en italique
Oprations de classe (statiques) soulignes
Possibilit dannoter avec des contraintes strotypes
precondition et postcondition
; Programmation par contrats
Possibilit de surcharger une opration :
; mme nom, mais paramtres diffrents
Strotypes doprations : create et destroy

34/140 .

Modliser la structure avec UML

Diagrammes de classes

Associations entre classes


; Abstraction des relations dfinies par les liens entre objets

Liens entre objets :


:C2

:C4

:C1

:C3
:C4

:C2
:C1

:C3
:C4

:C2
:C1

:C3

:C4

:C2
:C4

Associations entre classes dobjets :


1..*
C1

1..*

1
C2

0..1

0..1
C3

0..2
C4

35/140 .

Modliser la structure avec UML

Diagrammes de classes

Associations entre classes (1/2)


Role de C1 dans lassociation

C1

role1
mult1

Nom

Sens de lecture
role2
mult2

C2

Nombre dinstances de C1 pouvant etre lies une instance de C2


(ex. : 1, 0..1, *, 1..*, 4, 4..10, ...)

Interprtation en franais :
Un C1 Nom un C2 (ou un C2 Nom un C1 si sens de lecture inverse)
Un C1 est rle1 dun C2 et mult1 C1 peuvent jouer ce rle pour un C2
Un C2 est rle2 dun C1 et mult2 C2 peuvent jouer ce rle pour un C1
Exemple :

Entreprise

employeur
0..1

Est employe par

employ
Personne
1..*

36/140 .

Modliser la structure avec UML

Diagrammes de classes

Associations entre classes (2/2)


Role de C1 dans lassociation

C1

role1
mult1

Nom

Sens de lecture
role2
mult2

C2

Nombre dinstances de C1 pouvant etre lies une instance de C2


(ex. : 1, 0..1, *, 1..*, 4, 4..10, ...)

Interprtation en langage de programmation orient objet


La classe C1 a un attribut de nom rle2
; Type = C2 si mult2 {1, 0..1}, ou collection de C2 sinon
La classe C2 a un attribut de nom rle1
; Type = C1 si mult1 {1, 0..1}, ou collection de C1 sinon
Exemple :

Entreprise

employeur
0..1

Est employe par

employ
Personne
1..*

36/140 .

Modliser la structure avec UML

Diagrammes de classes

Au travail !
Chaque tudiant du dpartement IF suit un ensemble dunits
denseignement (UE).
Chaque UE a un coefficient et est constitue de cours, de travaux
dirigs (TD) et de travaux pratiques (TP).
Chaque cours, TD ou TP a une date. Les cours sont faits en amphi, les
TD en salle de classe et les TP en salle machine.
Pour les TP et TD, les tudiants sont rpartis dans des groupes. Pour
chaque TP, chaque tudiant est en binme avec un autre tudiant.
Les cours et les TD sont assurs par un enseignant. Les TP sont
assurs par deux enseignants.
Pour chaque UE, ltudiant a une note de devoir surveill ; pour chaque
TP, le binme a une note de TP.

37/140 .

Modliser la structure avec UML

Diagrammes de classes

Navigabilit
Quest-ce que la navigabilit dune association entre C1 et C2 ?
Capacit dune instance de C1 (resp. C2) accder aux instances de C2
(resp. C1)
Par dfaut :

C1

C2

C1

C2

Navigabilit dans les deux sens


; C1 a un attribut de type C2 et C2 a un attribut de type C1
Spcification de la navigabilit :
Orientation de lassociation
; C1 a un attribut du type de C2, mais pas linverse
Attention :
Dans un diagramme de classes conceptuelles, toute classe doit tre
accessible partir de la classe principale

38/140 .

Modliser la structure avec UML

Diagrammes de classes

Proprits et contraintes sur les associations


Proprits sur extrmits dassociations
{variable} : instance modifiable (par dfaut)
{frozen} : instance non modifiable
{addOnly} : instances ajoutables mais non retirables (si mult. > 1)
Contraintes prdfinies
Sur une extrmit : {ordered}, {unique}, ...
Entre 2 associations : {subset}, {xor}, ...

[images extraites de Muller et Gaertner]

39/140 .

Modliser la structure avec UML

Diagrammes de classes

Associations qualifies
Restriction dune relation / qualificateur :
Slection dun sous-ensemble dobjets laide dun attribut qualificatif
(cl)
Lattribut qualificatif appartient lassociation
Classe source

qualificatif
{sousensemble}

Classe destination

Exemples :
Banque

Banque numCpte

*
Compte

Compte

[image extraite de www.omg.org]

40/140 .

Modliser la structure avec UML

Diagrammes de classes

Classes-associations
Association attribue :
C1

attr1
attr2
...

C2

<=>

C1

C3
attr1
m
attr2
...

n
1

C2

Le nom de la classe association peut etre omis

Une classe association peut participer dautres associations :

C1

C2

C3
attr1
attr2
...

C4

41/140 .

Modliser la structure avec UML

Diagrammes de classes

Associations n-aires
Associations entre n classes (avec n > 2)
Enseignant

Enseignant

*
Groupe

<=>

Groupe

*
Cours
*

*
Salle

Salle

Classes-Associations n-aire
Enseignant
*
Groupe

*
*
Salle

Enseignant
Cours
date
heure

<=>

Groupe

Salle

*
Cours
date
heure
*

42/140 .

Modliser la structure avec UML

Diagrammes de classes

Associations particulires : composition et agrgation


Composition :
Livre

1..n

Chapitre

1..n

Paragraphe

Relation transitive et antisymtrique


La cration (copie, destruction) du composite (container) implique la
cration (copie, destruction) de ses composants
Un composant appartient au plus un composite
Agrgation :
Polygone

3..n

Point

Simple regroupement de parties dans un tout

43/140 .

Modliser la structure avec UML

Diagrammes de classes

Gnralisation et Hritage
Niveau conceptuel : Gnralisation
Relation transitive, non rflexive, et non symtrique
La sous-classe est-une-sorte-de la super classe
; Toute instance de la sous-classe est instance de la super classe
Niveau implmentation : Hritage
Mcanisme propos par les langages de programmation Objet
"B hrite de A" signifie que B possde :
Toutes les proprits de A (attributs, op., assoc., contraintes)
; Possibilit de redfinir les oprations de la sous-classe
; Polymorphisme
Ainsi que des nouvelles proprits qui lui sont propres
; Permet de factoriser les proprits communes plusieurs classes
; Une opration dfinie pour A est accessible aux sous-classes de A

44/140 .

Modliser la structure avec UML

Diagrammes de classes

Hritage et gnralisation : Exemple

45/140 .

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Composition
Problme :
Modliser le fait quil y a des voitures bleues, des voitures rouges et des
voitures vertes.
Solution 1 : Hritage
Crer une classe abstraite Voiture
Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent
de Voiture
Solution 2 : Composition
Crer une classe Voiture et une classe Couleur (numration)
Crer une association entre Voiture et Couleur
Comment reprsenter ces 2 solutions en UML ?

46/140 .

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Composition
Problme :
Modliser le fait quil y a des voitures bleues, des voitures rouges et des
voitures vertes.
Solution 1 : Hritage
Crer une classe abstraite Voiture
Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent
de Voiture
Solution 2 : Composition
Crer une classe Voiture et une classe Couleur (numration)
Crer une association entre Voiture et Couleur
Comment reprsenter ces 2 solutions en UML ?
Quelle solution choisissez-vous ?

46/140 .

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Composition
Problme :
Modliser le fait quil y a des voitures bleues, des voitures rouges et des
voitures vertes.
Solution 1 : Hritage
Crer une classe abstraite Voiture
Crer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui hritent
de Voiture
Solution 2 : Composition
Crer une classe Voiture et une classe Couleur (numration)
Crer une association entre Voiture et Couleur
Comment reprsenter ces 2 solutions en UML ?
Quelle solution choisissez-vous ?
Et si on veut modliser le fait quil y a des personnes hommes et des
personnes femmes ?

46/140 .

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Dlgation
Problme :
Appeler dans une classe B une opration op() dune classe A ?
Solution 1 : Hritage
Faire hriter B de A
op() peut tre appele depuis nimporte quelle instance de B
Solution 2 : Dlgation
Ajouter une association de B vers A
; Ajouter dans B un attribut a de type A

a.op() peut tre appele depuis nimporte quelle instance de B


Comment reprsenter ces 2 solutions en UML ?

47/140 .

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Dlgation
Problme :
Appeler dans une classe B une opration op() dune classe A ?
Solution 1 : Hritage
Faire hriter B de A
op() peut tre appele depuis nimporte quelle instance de B
Solution 2 : Dlgation
Ajouter une association de B vers A
; Ajouter dans B un attribut a de type A

a.op() peut tre appele depuis nimporte quelle instance de B


Comment reprsenter ces 2 solutions en UML ?
Quelle solution choisissez-vous ?

47/140 .

Modliser la structure avec UML

Diagrammes de classes

Hritage vs Dlgation
Problme :
Appeler dans une classe B une opration op() dune classe A ?
Solution 1 : Hritage
Faire hriter B de A
op() peut tre appele depuis nimporte quelle instance de B
Solution 2 : Dlgation
Ajouter une association de B vers A
; Ajouter dans B un attribut a de type A

a.op() peut tre appele depuis nimporte quelle instance de B


Comment reprsenter ces 2 solutions en UML ?
Quelle solution choisissez-vous ?
; On y reviendra avec les Design Patterns...

47/140 .

Modliser la structure avec UML

Diagrammes de classes

Contraintes sur les relations de gnralisation


{disjoint} ou {overlapping}
{complete} ou {incomplete}
; {disjoint,complete} Partition
{leaf} ou {root}

[Image emprunte www.omg.org]

48/140 .

Modliser la structure avec UML

Diagrammes de classes

Classes gnriques (templates)


Quest-ce quune classe gnrique ?
Classe paramtre par dautres classes
; Factorisation de code

T
Pile
<<bind>>(String) <<bind>>(Float)
PileDeString

PileDeFloat

Exemple de code C++

Exemple de code Java :

template <class T> class Pile{


public:
Pile() { ... }
void empile(T e) { ... }
...
private: ...
};
...
Pile<float> p1;
Pile<string> p2;
p1.empile(2.5);
p2.empile(a);
...

public class Pile<T> {


public Pile() { ... }
public void empile(T e) { ... }
...
private ...
};
...
Pile<Float> p1 = new Pile<Float>();
Pile<String> p2 = new Pile<String>();
p1.empile(2.5);
p2.empile(a);
...

49/140 .

Modliser la structure avec UML

Diagrammes de classes

Classes abstraites
Quest-ce quune classe abstraite ?
Classe qui ne peut tre instancie
Contient des oprations non dfinies :
; abstract (Java) ou virtual (C++)
Doit tre spcialise en une ou plusieurs classes non abstraites
Notation : mot cl {abstract} ou nom en italique
Pourquoi des classes abstraites ?
Spcifier un comportement commun plusieurs classes
Manipuler des instances de classes diffrentes de faon uniforme
; Polymorphisme
Bonne pratique :
Dans une hirarchie dhritage, les classes qui ne sont pas des feuilles sont
gnralement abstraites

50/140 .

Modliser la structure avec UML

Diagrammes de classes

Classes abstraites et polymorphisme / Ex. C++

51/140 .

Modliser la structure avec UML

Diagrammes de classes

Classes abstraites et polymorphisme / Ex. Java

52/140 .

Modliser la structure avec UML

Diagrammes de classes

Interface
Quest-ce quune interface ?
Classe sans attribut dont toutes les oprations sont abstraites
; Ne peut tre instancie
; Doit tre ralise (implmente) par des classes non abstraites
; Peut hriter dune autre interface
Pourquoi des interfaces ?
Utilisation similaire aux classes abstraites
En Java : une classe ne peut hriter de plus dune classe, mais elle peut
raliser plusieurs interfaces
Notations UML :
Nom : interface Itf1
Hritage : Itf1  Itf2
Itf1
Ralisation : Class1 - - - -  Itf1 ou Class1 -O

Itf1
Utilisation : Class2 - - use - - > Itf1 ou Class2 -C

53/140 .

Modliser la structure avec UML

Diagrammes de classes

Exemple

[image emprunte Craig Larman]

54/140 .

Modliser la structure avec UML

Diagrammes de classes

Quelques strotypes et mots-cls


{abstract} : classe abstraite (alternative : nom en italique)
interface : interface
numration : instances appartiennent un ensemble fini de
littraux
type primitif : instances sont des valeurs dun type primitif
classe implmentation : implmentation dune classe dans un
langage de programmation
utilitaire : variables et procdures globales

55/140 .

Modliser la structure avec UML

Diagrammes de classes

Synthse des diffrentes relations

Association
Navigable dans les 2 sens :
Navigable dans un sens : >
ou X>
Composition : 
Agrgation : <>
Gnralisation : 
Ralisation dune interface : O ou - - - - - - - - - - - - 

Utilisation dune interface : C ou - - - - use - - - - >


Intanciation dune classe gnrique : - - - - bind (Type) - - - - >
Dpendance : - - - - - - - - - - - - >

56/140 .

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (1/3)

Maison

1..*

Pice

1..2

Fenetre

57/140 .

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (1/3)

Maison

1..*

Pice

1..2

Fenetre

Navigabilit : Tout objet doit tre accessible via une association

57/140 .

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (2/3)

Bagage

Passager

*
1
1

Vol

58/140 .

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (2/3)

Bagage

Passager

*
1
1

Vol

Eviter les associations redondantes :


; Le vol dun bagage est obtenu partir du passager
; Les bagages dun vol sont obtenus partir des passagers

Possibilit de spcifier que lassociation Bagage-Vol est drive...

58/140 .

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (3/3)

Chambre

Rservation
*

dateDeb
dateFin

Client
Personne

nom
1
Hotel

Grant

59/140 .

Modliser la structure avec UML

Diagrammes de classes

Cherchez lerreur (3/3)

Chambre

Rservation
*

dateDeb
dateFin

Client
Personne

nom
1
Hotel

Grant

Navigabilit : En labsence de rservations, on ne peut accder ni aux


chambres ni aux clients

59/140 .

Modliser la structure avec UML

Diagrammes de paquetage

Plan du cours
1

Introduction

Modliser la structure avec UML


Structuration Oriente Objet
Diagrammes dobjets
Diagrammes de classes
Diagrammes de paquetage
Diagrammes de composants
Diagrammes de dploiement

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

60/140 .

Modliser la structure avec UML

Diagrammes de paquetage

Diagrammes de paquetages
Quest-ce quun paquetage (package) ?
lment de modlisation qui :
Contient dautres lments de modlisation (classes, autres paquetages, ...)
; Possibilit de ne pas reprsenter tous les lments contenus
Dfinit un espace de nom (namespace)

[Image extraite de Muller et Gaertner]

61/140 .

Modliser la structure avec UML

Diagrammes de paquetage

Espaces de nom et visibilit


2 lments dans 2 paquetages diffrents sont diffrents, quel que soit
leur nom

Nom complet = nom prfix par les noms des paquetages


englobants : Banque::Compte 6= Commerce::Compte
Visibilit dun lment E dans un package P :
Public (+) : Elment visible par tous (utilisation du nom complet)
Priv (-) : Elment visible uniquement par
Les autres lments de P
Les lments englobs par E (si E est un package)

62/140 .

Modliser la structure avec UML

Diagrammes de paquetage

Dpendances entre paquetages


Refltent les dpendances entre lments des paquetages :
Une classe A dpend dune classe B (not A - - - - - - - - > B) si :
Il existe une association navigable de A vers B
(ou A possde un attribut de type B)
Une mthode de A a un paramtre ou une variable locale de type B
Strotypes sur les dpendances inter-paquetage
A - - - accde - - - > B :
Tout lment public de B est accessible par son nom complet depuis A
A - - - importe - - - > B :
Tout lment public de B est accessible par son nom depuis A
; Cration dalias si ncessaire
Valeur marque {global} :

Paquetage visible par tous les autres paquetages


; Inutile de montrer les dpendances vers ce paquetage

63/140 .

Modliser la structure avec UML

Diagrammes de paquetage

Architecture logique
Quest-ce quune architecture logique ?
Regroupement des classes logicielles en paquetages
; Point de dpart pour un dcoupage en sous-systmes
Objectifs dune architecture logique :
Encapsuler et dcomposer la complexit
Faciliter le travail en quipes
Faciliter la rutilisation et lvolutivit
; Forte cohsion intra paquetage
; Faible couplage inter paquetages
Exemples darchitectures logiques :
Architecture en couches
Architecture Modle - Vue - Contrleur (MVC)
Architecture Multi-tiers
...

64/140 .

Modliser la structure avec UML

Diagrammes de composants

Plan du cours
1

Introduction

Modliser la structure avec UML


Structuration Oriente Objet
Diagrammes dobjets
Diagrammes de classes
Diagrammes de paquetage
Diagrammes de composants
Diagrammes de dploiement

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

65/140 .

Modliser la structure avec UML

Diagrammes de composants

Diagrammes de composants
Composant :
Encapsule ltat et le comportement dun ensemble de classifiers
(classes, composants...)
Spcifie les services fournis et requis :
Interfaces fournies : provided interfaces ou O
Interfaces requises : required interfaces ou C
interfaces
; Substituable tout composant qui offre/requiert les m
Exemple :

[Image extraite de www.ibm.com/developerworks/rational]

66/140 .

Modliser la structure avec UML

Diagrammes de composants

Relations entre composants


; Inclusion entre composants et Fourniture ou Utilisation dinterfaces

[Image extraite de www.ibm.com/developerworks/rational]

67/140 .

Modliser la structure avec UML

Diagrammes de dploiement

Plan du cours
1

Introduction

Modliser la structure avec UML


Structuration Oriente Objet
Diagrammes dobjets
Diagrammes de classes
Diagrammes de paquetage
Diagrammes de composants
Diagrammes de dploiement

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

68/140 .

Modliser la structure avec UML

Diagrammes de dploiement

Diagrammes de dploiement
Modliser le dploiement du systme sur une architecture physique
Disposition des artefacts sur les nuds physiques
Artefacts : instances de composants, processus, ...
Nuds physiques : Ordinateur, Tlphone, Imprimante, ...
Moyens de communication entre les nuds

69/140 .

Modliser le comportement avec UML

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

70/140 .

Modliser le comportement avec UML

Modliser le comportement avec UML


Dcrire le comportement du systme en termes dinteractions
Systme vu comme une boite noire :
Qui interagit avec le systme, et dans quel but ?
; Diagramme de cas dutilisation
Comment interagit le systme avec son environnement ?
; Diagramme de squence systme

Systme vu comme une boite blanche :

Comment interagissent les objets du systme ?


; Diagramme de squence et/ou de communication
Dcrire lvolution du systme dans le temps
Comment voluent les tats des objets ?
; Diagrammes dtats-transitions

71/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML


Diagrammes dinteraction
Diagrammes de cas dutilisation
Diagrammes dtats-transitions

Principes et patrons de conception oriente objet

72/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes dinteraction
; Point de vue temporel sur les interactions

Pendant la capture des besoins (systme = boite noire) :


; Interactions entre acteurs et systme

Dcrire les scnarios des cas dutilisation

Pendant la conception (systme = boite blanche) :


; Interactions entre objets

Rflchir laffectation de responsabilits aux objets


Qui cre les objets ?
Qui permet daccder un objet ?
Quel objet reoit un message provenant de lIHM ?
...
de faon avoir un faible couplage et une forte cohsion
Elaboration en parallle avec les diagrammes de classes
; Contrler la cohrence des diagrammes !

73/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence vs diagrammes de communication

Diagrammes de squence :

Diagrammes de communication :

Structuration en termes de

Structuration en multigraphe

temps ; axe vertical

Numrotation des arcs pour


modliser lordre des interactions

objets ; axe horizontal

Exemple :

Exemple :
o2:T2

o1:T1

1: ret1=msg1(p1)

o3:T3

o2:T2

o1:T1
msg1(p1)

msg2(p2)
ret2
msg3(p3)

ret1

ret3

1.1: ret2=msg2(p2)
1.2: ret3=msg3(p3)

o3:T3

74/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence
Ligne de vie et activation

Message dont lmetteur nest pas connu


Nom de lobjet
Objet anonyme
Type de lobjet
o1:T1
msg()

:T2

Activation par envoi de message

msg1(p1)

Temps

Dure dactivation
ret1

Valeur retourne (facultatif)


Ligne de vie de o1

75/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence
Cration et destruction dobjets

o1:T1
Crer

...change
de messages...

o2:T2

Dure de vie do2

Dtruire

76/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence
Messages rflexifs, messages asynchrones et contraintes temporelles
o1:T1

o2:T2

o1:T1

o2:T2

msg1()
msg1(p1)

msg2()

ret1

o2:T2

o1:T1
msg1()

Dlai de propagation

x
yx < 2s

msg2()

77/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence : Cadres


Mot rserv pour dclarer un diagramme de squence
Nom du diagramme de squence
sd xx
o1:T1

o2:T2

o3:T3

o1:T1 o2:T2

msg1()
loop

msg1() ref xx

[condition]
msg2()

ret
connexions
alt

[condition1]

[else]

msg3()

Rfrence au
diagramme xx

msg4()

ret

; Existe aussi : par, opt, critique

78/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de squence
Messages polymorphes

f: Fenetre

vues[i]: VueGraphique

dessiner()
loop

VueGraphique
[i variant de 0 f.nbVues]

afficher()

afficher()
VueRond

:VueRond
afficher()

msg1()

o2:T2

:VueCarr
afficher()

VueCarr

o3:T3

msg2()

79/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Liens entre diag. de classes et dinteraction

[Figure extraite du livre de C. Larman]

80/140 .

Modliser le comportement avec UML

Diagrammes dinteraction

Diagrammes de communication
Prsentation alternative dune squence dinteractions

81/140 .

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML


Diagrammes dinteraction
Diagrammes de cas dutilisation
Diagrammes dtats-transitions

Principes et patrons de conception oriente objet

82/140 .

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Cas dutilisation
Pourquoi faire ?
Permettre au client de dcrire ses besoins
Parvenir un accord (contrat) entre clients et dveloppeurs
Point dentre pour les tapes suivantes du dveloppement
Quest ce quun cas dutilisation ?
Usage que des acteurs font du systme
Acteur : Entit extrieure qui interagit avec le systme
; Une mme personne peut jouer le rle de diffrents acteurs
; Un acteur peut tre un autre systme (SGBD, Horloge, ...)
Usage : Squence dinteractions entre le systme et les acteurs
Gnralement compos de plusieurs scnarios (instances)
; Scnario de base et ses variantes (cas particuliers)

; Description des scnarios laide de diagrammes de squence

83/140 .

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Comment dcouvrir les cas dutilisation ?


Dlimiter le primtre du systme
Identifier les acteurs interagissant avec le systme :
Ceux qui utilisent le systme
Ceux qui fournissent un service au systme
Identifier les acteurs principaux
; Ceux qui utilisent le systme pour atteindre un but
Dfinir les cas dutilisation correspondant ces buts
; Nom = Verbe linfinitif + Groupe nominal
Comment dcrire les cas dutilisation ?
Diagramme de cas dutilisations
; Rcapitulatif graphique des interactions entre acteurs et cas
Diagramme de squence
; Description de chaque scnario
; Squences dinteractions entre les acteurs et le systme

84/140 .

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Diagrammes de cas dutilisation


Systme XXX

Limites du systme
nom du systme

Client

Traiter une vente

Ouvrir la caisse

Caissier

<<actor>>
Service
dautorisation
des paiements
<<actor>>
Systme des
ressources
humaines

Traiter un retour

notation alternative
pour un acteur
Communication
acteur
Grant

Grer la scurit

cas dutilisation

Administrateur systme

85/140 .

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Relations entre cas dutilisation


Gnralisation : 
Inclusion : - - - - - include - - - - - >
Extension : - - - - - extend - - - - - > (prciser la condition)
; A utiliser avec modration

Systme XXX
Faire un virement
Client local

<<tend>>
montant > 500 euros
<<inclut>>

Faire un virement par internet

Vrifier solde compte

Identifier client
Client distant

86/140 .

Modliser le comportement avec UML

Diagrammes de cas dutilisation

Diagrammes de squence dun cas dutilisation


Reprsentation graphique dun scnario dun cas dutilisation

: Systme

: Caissier
crerNouvelleVente()
loop [reste des articles]
saisirArticle(codeArt,Qte)
description, total

terminerVente()
total HT et TTC
crerPaiement(montant)
rendu de la monnaie, reu

; Le systme vu comme une boite noire

87/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML


Diagrammes dinteraction
Diagrammes de cas dutilisation
Diagrammes dtats-transitions

Principes et patrons de conception oriente objet

88/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Parenthse sur les automates finis (1/3)


Un automate fini est dfini par
Un ensemble de symboles A
Un ensemble fini dtats Q
Un ensemble dtats initiaux I Q et dtats terminaux T Q
Une relation de transition R Q A Q
Interprtation : (qi , s, qj ) passer de qi qj quand on lit s
Reprsentation dun automate fini par un graphe
Chaque tat correspond un sommet
s
Chaque transition (qi , s, qj ) correspond un arc qi qj
Exemple :
A = {e, ., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
0|..|9
Q = {q0 , q1 , q2 , q3 , q4 , q5 }
T = {q1 , q2 , q3 , q5 }
1|..|9
q1
q0
I = {q0 }
0

0|..|9

.
.

q3

0|..|9
e

q4

1|..|9

q5

q2

89/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Parenthse sur les automates finis (2/3)


Excution dun automate fini :
Un automate est une procdure qui reconnait des mots
Entre = une suite de symboles de A
Sortie = vrai ou faux
Un mot < s1 , ..., sn > est reconnu sil existe < q0 , ..., qn > tel que :
q0 I, qn T et i [1..n], (qi1 , si , qi ) R
; Chemin partant dun tat de I et arrivant sur un tat de F
Exemple :
0|..|9

0|..|9

Mots reconnus :
0, 0.123e45, 125, ...
Mots non reconnus :
012, 4.5.6, 1e2, ...

q0

1|..|9
0

q1

.
.

q3

0|..|9
e

q4

1|..|9

q5

q2

Comment modifier lautomate pour quil accepte 1e2 ?

90/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Parenthse sur les automates finis (3/3)


Automates finis dterministes et complets
Un automate est dterministe si R est une fonction de Q A dans Q
; On peut toujours rendre dterministe un automate

Un automate est complet si R est une fonction totale


; On peut toujours rendre complet un automate
Exemple :
a|...|z
q0

q1

q2

a|...|z

=e

q3

q0

a|...|z

e
e
q1
=e,s
=e,t

s
e

q2

q3

91/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Au del des automates finis


Les automates finis dterministes sont trs efficaces
Complexit en temps linaire / taille du mot
Mais ils ont un pouvoir dexpression limit aux langages rguliers
Ne peuvent reconnatre les expressions bien parenthses (entre autres)
Un automate pile a un pouvoir dexpression suprieur
A chaque transition, on peut empiler ou dpiler des symboles
Permet de reconnatre tous les langages hors-contexte
; Langages de programmation (C++, Java, ...)
Mais certains langages ne peuvent pas tre reconnus par un automate pile
Une machine de Turing est un automate encore plus puissant
A chaque transition, on peut crire ou lire sur un ruban
Permet de reconnatre tous les langages dcidables
; Pouvoir de calcul quivalent un ordinateur
Mais certains langages sont indcidables !

92/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Retour aux diagrammes dtats-transitions


Utiliss pour modliser :
Le cycle de vie des objets
Evolution de ltat des objets
Comportement face larrive dvnements
; Intressant si les rponses aux vnements dpendent des tats
Mais aussi : protocoles complexes (GUI, ...), processus mtier, ...
Pouvoir dexpression variable :
Pas daction ni de garde
; Automates finis

Pas de garde + actions limites lutilisation dune pile


; Automates pile
Machines de Turing dans le cas gnral

93/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Diagrammes sans gardes ni actions


Automates finis un peu particuliers :
Remplacement de la lecture de symboles par des vnements :
; Occurrence dun fait significatif ou remarquable
Rception dun signal
Rception dun message
Expiration dune temporisation
...
Les vnements dclenchent les transitions dun tat vers un autre
; Evnement perdu si aucune transition spcifie pour lui
Il y a un tat initial, mais pas toujours dtat final
Exemple :

Etat initial

Evnement
Inactif

dcrocher

Actif

Etat

raccrocher

94/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Exemple de diagramme dtat


Modlisation des tats dun processus

En attente
suspendu

Pret
suspendu
suspendu

activ

E/S arrive

Pret
time
out
En excution
Noyau

instr
util

suspendu

slection

En excution
Utilisateur

activ

En attente

E/S attendue

exit ou signal

Termin
(ou zombi)

instr.
noyau

Etat final

95/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Diffrents types dvnements :


Signaux :
nomSignal
Q0 > Q1
Appels doprations :
nomOp(paramtres)
Q0 > Q1
; Les paramtres peuvent tre typs ou non
Evnements temporels :
after(qt tps)
Q0 > Q1
; Passage dans ltat Q1 qt tps aprs larrive dans ltat Q0
Evnements de changement :
when(cond)
Q0 > Q1
; Passage dans ltat Q1 quand cond devient vraie

96/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Etats imbriqus (ou composites)


Un tat peut contenir des sous-tats
Permet de factoriser les transitions de sortie du composite
; Chaque transition de sortie sapplique tous les sous-tats
Une seule transition dentre
Actif

Exemple :
dcrocher
Inactif

Conversation

EmissionTonalit
raccrocher

chiffre

connect

chiffre

Numrotation termin

Connexion

Notation alternative pour ltat initial du composite :


Actif
Inactif

dcrocher

Conversation

EmissionTonalit
raccrocher

chiffre

chiffre

Numrotation

connect
termin

Connexion

97/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Etats concurrents (1/2)


Plusieurs sous-automates peuvent tre concurrents :
Etat courant = n-uplet de sous-tats
; Etats de S = {(Z, A), (Z, B), (X, A), (X, B), (Y, A), (Y, B)}
Excution indpendante des sous-automates
Un vt peut dclencher une transition dans plusieurs sous-auto.
Sortie possible quand tous les sous-auto. sont dans un tat final
Exemple :

...

... P
e0

P
e0
S

S0

ZA

S1
e3 Z

X
e1

e3

A
e2

e1

e4
B

e2

<=>

e4

XA
e1 e4
XB

YA
e4

e1
e1
e1 e2
e3

e5

YB

e1
ZB

e5
Q ...

98/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Etats concurrents (2/2)


Cas o les sous-automates sont complets :
Equivalent au produit dautomates finis
; Intersection des langages reconnus par les sous-automates
Exemple :

... X
e1
S1

X
e1

P0P1

S
S0

0
P0

1
0
1

P1
0

I0

<=>

1
I1

I0P1
0
0

P0I1
0

e2
Y ...

1
I0I1
e2
Y ...

99/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Gardes et transitions composites


Conditions de garde :

garde = expression boolenne


A

e1 [cond]

Transition de A vers B ralise si cond est vraie quand e1 arrive


; Si cond est fausse alors e1 est perdu
Transitions composites :
Commande
validation
[tot=0]
Annulation

[0<tot<1000]
Traitement

[tot>=1000]
VrifApprov

Factorisation de lvnement dclencheur validation


Les gardes doivent tre mutuellement exclusives pour que lautomate
soit dterministe

100/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Actions et activits
Actions (envoi de signaux, invocation doprations, ...) :
Peuvent tre excutes :
Lors dune transition (ex. : action4)
En entrant dans un tat (ex. : action1)
En sortant dun tat (ex. : action3)
Sont atomiques (ne peuvent tre interrompues par un vnement)
Activits :
Peuvent tre excutes dans un tat (ex. : activit2)
Peuvent tre continues ou non
Sont interrompues larrive dun vnement en sortie de ltat
Exemple :

A
entre / action1
faire / activit2
sortie / action3

e1 / action4

Ordre dexcution : action1 - activit2 - action3 - action4

101/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Quelques conseils...

Pas de transition sans vnement


Lautomate doit tre dterministe (en gnral...)
Si plusieurs transitions partant dun tat ont le mme vnement,
alors il doit y avoir des gardes qui garantissent le dterminisme
Tous les tats doivent tre accessibles depuis ltat initial
Sil y a des tats terminaux alors, pour chaque tat non terminal, il doit
exister un chemin de cet tat vers un tat terminal (...en gnral)

102/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Exercice 1 : traduction dun modle en LDS


Connexion entre couches du point de vue de la couche B [F. Biennier]
Modle en LDS (Langage de Description de Systmes)

103/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Exercice 1 : traduction dun modle en LDS


Connexion entre couches du point de vue de la couche B [F. Biennier]
Modle en LDS (Langage de Description de Systmes)
Repos
ReqCon de A
ConfCon de C / Envoi de ReqCon C

Cnx C
ConfCon+ de C
/ Envoi de ReqData(BonjourB) C
[B naccepte pas]
/ Envoi de ConfCon A
Cnx B
Ind Data de C

[B accepte]
/ Envoi de ConfCon+ A
Connect

103/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Exercice 2 : Fonctionnement dun tlphone

Actif
dcrocher
Inactif

AttenteNumrotation
chiffre[i<9]/i++

raccrocher

chiffre/i=1

Numrotation

chiffre[i==9]

Conversation
connexion
Attente
connexion

Complter ce diagramme :
Emission dune tonalit quand on dcroche
Emission dun bip quand on compose un chiffre
Cas dun faux numro
...

104/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

Diagrammes dactivits
Variante des diagrammes dtats-transitions
; Modlisation de flux

[Image emprunte J.-L. Sourrouille]

105/140 .

Modliser le comportement avec UML

Diagrammes dtats-transitions

106/140 .

Principes et patrons de conception oriente objet

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML

Principes et patrons de conception oriente objet

107/140 .

Principes et patrons de conception oriente objet

De UML la conception oriente objet

Drawing UML diagrams is a reflection of making decisions about the object


design. The object design skills are what really matter, rather than knowing
how to draw UML diagrams.
Fundamental object design requires knowledge of :
Principles of responsibility assignments
Design patterns
[Extrait du livre de C. Larman]

108/140 .

Principes et patrons de conception oriente objet

Principes de conception oriente objet


Ou comment concevoir des logiciels maintenables et rutilisables

Protection des variations : Identifier les points de variation et dvolution,


et sparer ces aspects de ceux qui demeurent constants
Faible couplage : Rduire limpact des modifications en affectant les
responsabilits de faon minimiser les dpendances entre
classes
Forte cohsion : Faciliter la comprhension, gestion et rutilisation des
objets en concevant des classes but unique
Indirection : Limiter le couplage et protger des variations en ajoutant des
objets intermdiaires
Composer au lieu dhriter : Limiter le couplage en utilisant la composition
(boite noire) au lieu de lhritage (boite blanche) pour dlguer
une tche un objet
Programmer pour des interfaces : Limiter le couplage et protger des
variations en faisant abstraction de limplmentation des objets
Ces principes se retrouvent dans beaucoup de Design Patterns...

109/140 .

Principes et patrons de conception oriente objet

Patrons de conception (Design patterns)


Patrons architecturaux vs patrons de conception
Patrons architecturaux : Structuration globale en paquetages
; Couches, MVC, Client-serveur, Multi-tiers, ...

Patrons de conception : Structuration dtaille en classes


Attributs et oprations des classes : qui doit savoir, qui doit faire ?
Relations entre classes : dlgation, hritage, ralisation, ... ?
Description dun patron de conception
Nom ; Vocabulaire de conception

Problme : Description du sujet traiter et de son contexte


Solution : Description des lments, de leurs relations/cooprations et
de leurs rles dans la rsolution du problme
; Description gnrique
; Illustration sur un exemple

Consquences : Effets rsultant de la mise en uvre du patron


; Complexit en temps/mmoire, impact sur la flexibilit, portabilit, ...

110/140 .

Principes et patrons de conception oriente objet

23 patrons du Gang of Four (GoF)


[E. Gamma, R. Helm, R. Johnson, J. Vlissides]

Patrons de cration
Ceux quon va voir : Abstract factory, Factory method, Singleton
Et les autres : Prototype, Builder
Patrons comportementaux
Ceux quon va voir : Iterator, Strategy, State, Observer, Command
Et les autres : Visitor, Chain of responsiblity, Interpreter, Mediator,
Memento, Template method
Patrons structuraux
Ceux quon va voir : Decorator, Adapter, Facade, Composite
Et les autres : Bridge, Flyweight, Proxy
111/140 .

Principes et patrons de conception oriente objet

Abstract Factory, Factory method, Singleton

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML

Principes et patrons de conception oriente objet


Abstract Factory, Factory method, Singleton
Iterator, Strategy, State, Observer, Command
Adapter, Facade, Decorator, Composite

112/140 .

Principes et patrons de conception oriente objet

Abstract Factory, Factory method, Singleton

Abstract factory (1/2)


Problme :
Crer une famille dobjets sans spcifier leurs classes concrtes
Illustration sur un exemple :
Crer une interface graphique avec widgets (boutons, menus, ...)
Point de variation : OS (Linux, OSX, Windows)
AbstractGUIfactory

...

Client

+creBouton(...)
+creMenu(...)

AbstractGUIfactory f;
if (..) f=new GUIfactoryOSX();
else f=new GUIfactoryLinux();
...
Bouton b=f.creBouton(...);
Menu m=f.creMenu(...);
...

GUIfactoryOSX

GUIfactoryLinux

+creBouton(...)
+creMenu(...)

+creBouton(...)
+creMenu(...)

Bouton

+dessine(...)

public Bouton creBouton(...){


return new BoutonLinux(...);
}

* Menu
+actionMenu(...)

BoutonLinux

BoutonOSX

MenuLinux

MenuOSX

+dessine(...)

+dessine(...)

+actionMenu(...)

+actionMenu(...)

113/140 .

Principes et patrons de conception oriente objet

Abstract Factory, Factory method, Singleton

Abstract factory (2/2)


Solution Gnrique [Wikipedia] :

Remarques :
AbstractFactory et AbstractProduct
sont gnralement des interfaces
; Programmer pour des interfaces
Les mthodes createProduct. . . ()
sont des factory methods

Avantages du pattern :
Indirection : Isole Client des
implmentations des produits
Protection des variations : Facilite la
substitution de familles de produits
Maintien automatique de la
cohrence
Mais lajout de nouveaux types de
produits est difficile...

114/140 .

Principes et patrons de conception oriente objet

Abstract Factory, Factory method, Singleton

Singleton
Problme :
Assurer quune classe possde une seule instance et rendre cette instance
accessible globalement
Solution gnrique [Wikipedia] :
public static synchronized Singleton getInstance(){
if (_singleton == null)
_singleton = new Singleton();
return _singleton;
}

Exercice :
Utiliser Singleton pour implmenter une classe Factory
Attention :
Parfois considr comme un anti-pattern... utiliser avec modration !
115/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML

Principes et patrons de conception oriente objet


Abstract Factory, Factory method, Singleton
Iterator, Strategy, State, Observer, Command
Adapter, Facade, Decorator, Composite

116/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Iterator (1/3)
Problme :
Fournir un accs squentiel aux lments dun agrgat dobjets
indpendamment de limplmentation de lagrgat (liste, tableau, ...)
Illustration sur un exemple en C++ :

Avantage : On peut remplacer vector<int> par un autre container sans


modifier le code de somme()

117/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Iterator (2/3)
Illustration sur un exemple en Java :
Factory method

Question : Pourquoi sparer Iterator de Collection ?


Exercice : Dessiner le diagramme de squence de somme()

118/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Iterator (3/3)
Solution gnrique :

Avantages :
Protection des variations : Client est protg des variations dAggregate
Forte cohsion : Sparation du parcours de lagrgation

Possibilit davoir plusieurs itrateurs sur un mme agrgat en mme 119/140


tps .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (1/3)
Problme :
Changer dynamiquement le comportement dun objet
Illustration sur un exemple :
Dans un jeu vido, des personnages combattent des monstres...
; mthode combat(Monstre m) de la classe Perso
...et le code de combat peut tre diffrent dun personnage lautre
Sol. 1 : combat contient un cas pour chaque type de combat
Sol. 2 : La classe Perso est spcialise en sous-classes qui
redfinissent combat

Reprsenter ces solutions en UML. Peut-on facilement :


Ajouter un nouveau type de combat ?
Changer le type de combat dun personnage ?

120/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (1/3)
Problme :
Changer dynamiquement le comportement dun objet
Illustration sur un exemple :
Dans un jeu vido, des personnages combattent des monstres...
; mthode combat(Monstre m) de la classe Perso
...et le code de combat peut tre diffrent dun personnage lautre
Sol. 1 : combat contient un cas pour chaque type de combat
Sol. 2 : La classe Perso est spcialise en sous-classes qui
redfinissent combat
Sol. 3 : La classe Perso dlgue le combat des classes
encapsulant des codes de combat et ralisant toutes une mme
interface
Reprsenter ces solutions en UML. Peut-on facilement :
Ajouter un nouveau type de combat ?
Changer le type de combat dun personnage ?

120/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (2/3)
Diagramme de classes de la solution 3 :

Code Java de la classe Perso :

Comment crer linstance


de TypeCombat correspondant
niveau ?

121/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (2/3)
Diagramme de classes de la solution 3 :

Code Java de la classe Perso :

121/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Strategy (3/3)
Solution gnrique :
[Wikipedia]

Remarques :
Principes de conception oriente objet mobiliss :
Indirection : Isole Context des implmentations de Strategy
; Protection des variations
Composer au lieu dhriter : Changer dynamiquement de stratgie
Passage dinformations de Context Strategy
en poussant : linfo est un param de AlgorithmInterface()
en tirant : le contexte est un param. de AlgorithmInterface()
qui utilise des getters pour rcuprer linfo

122/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

State (1/3)
Problme :
Modifier le comportement dun objet en fonction de son tat
Illustration sur un exemple :
Les personnages dun jeu peuvent combattre, rsoudre des nigmes et crier :

Novice
crie()

combat()

[victoire]
[dfaite]

combat()

[dfaite]

rsout()
Confirm
crie()

combat()

[victoire]
rsout()

Expert
crie()
rsout()

Sol. 1 : Chaque mthode de Perso contient un cas par tat


public void resout(){
if (etat == NOVICE){ ... ; etat = CONFIRME;}
else if (etat == CONFIRME){ ... ; etat = EXPERT;}
else { ... ; System.exit(0);}
}

Quel est le cot de lajout dun nouvel tat ou dune nouvelle action ?

123/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

State (2/3)
Solution 2 :
Encapsuler les tats dans des classes implmentant une mme interface

124/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

State (3/3)
Solution gnrique :
[Wikipedia]

Remarques :
Ajout dun nouvel tat facile...
...mais ajout dune nouvelle action plus compliqu
Si ConcreteState ne mmorise pas dinformation interne
Alors les tats peuvent tre des attributs statiques de Context
Sinon il faut une instance de ConcreteState par instance de Context
; Peut devenir coteux en mmoire !

Point commun avec Strategy : utilise la dlgation pour modifier


dynamiquement le comportement des instances de Context, comme si
elles changeaient de classes

125/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (1/3)


Problme :
Faire savoir un ensemble dobjets (observateurs/abonns) quun autre objet
(observable/publieur) a t modifi
Illustration sur lexemple du jeu vido :
La reprsentation (vue) des personnages dpend de leur niveau...
...et on peut avoir plusieurs vues (graphique, sonore, textuelle, etc)
...et on veut se protger des volutions et variations sur ces vues
; Utilisation du patron architectural Model-View-Controller (MVC)
Modle : traite les donnes

Vue : affiche les donnes, reoit les evt


clavier/souris et les envoie au contrleur

Flche pleine = dpendance


Pointills = vnements

Contrleur : analyse les evt


clavier/souris et active le modle et/ou la
vue en consquence
Modle est observable, Vue est observateur

126/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (2/3)


void addObserver(Observer o){
obs.add(o);
}

obs
0..*

vueGraphique

modle

void notifyObservers(Object o){


if (!changed) return;
clearChanged();
Iterator<Observer> it = obs.iterator();
while (it.hasNext)
it.next().update(this,o);
}

public VueGraphiquePerso(Perso p){


perso = p;
perso.addObserver(this);
...
}

127/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (2/3)


void addObserver(Observer o){
obs.add(o);
}

obs
0..*

vueGraphique

modle

void notifyObservers(Object o){


if (!changed) return;
clearChanged();
Iterator<Observer> it = obs.iterator();
while (it.hasNext)
it.next().update(this,o);
}

public VueGraphiquePerso(Perso p){


perso = p;
perso.addObserver(this);
...
}

127/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (2/3)


void addObserver(Observer o){
obs.add(o);
}

obs
0..*

vueGraphique

modle

public VueGraphiquePerso(Perso p){


perso = p;
perso.addObserver(this);
...
}

public void setEtat(Etat e){


etatCourant = e;
setChanged();
notifyObservers(null);
...
}

void notifyObservers(Object o){


if (!changed) return;
clearChanged();
Iterator<Observer> it = obs.iterator();
while (it.hasNext)
it.next().update(this,o);
}

Spcifique limplmentation
de java.util

127/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Observer (aka Publish/Subscribe) (3/3)


Solution gnrique [Wikipedia] :

Remarques :
Faible couplage entre ConcreteObserver et Subject
Les donnes de Subject peuvent tre pousses (dans notify) ou
tires (avec des getters)
Se retrouve dans de nombreuses API Java
; Listeners de lAPI Swing pour observer le clavier, la souris, ...

128/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Command (1/3)
Problme :
Dcoupler la rception dune requte de son excution
swing

Illustration / modle MVC :


Le contrleur reoit les
vnements utilisateur
(actionPerformed et
mouseClicked) et
appelle en consquence
des mthodes (action1
et action2) qui activent
le modle et la vue

controleur

event

vue

modle

On veut garder un
historique pour pouvoir
annuler les dernires
actions

129/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Command (2/3)
Encapsuler les commandes dans des objets contenant les informations
permettant de les excuter/annuler
Stocker les commandes dans une pile

130/140 .

Principes et patrons de conception oriente objet

Iterator, Strategy, State, Observer, Command

Command (3/3)
Solution gnrique :
Client cre les instances
de ConcreteCommand
Invoker demande
lexcution des commandes
ConcreteCommande
dlgue lexcution
Receiver
Remarques :
Dcouple la rception dune requte de son excution
Les rles de Client et Invoker peuvent tre jous par une mme
classe (par exemple le contrleur)
Permet la journalisation des requtes pour reprise sur incident
Permet dannuler ou r-excuter des requtes (undo/redo)

131/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Plan du cours

Introduction

Modliser la structure avec UML

Modliser le comportement avec UML

Principes et patrons de conception oriente objet


Abstract Factory, Factory method, Singleton
Iterator, Strategy, State, Observer, Command
Adapter, Facade, Decorator, Composite

132/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Adapter
Problme :
Fournir une interface stable (Adaptateur) un composant dont linterface
peut varier (Adapt)
Solution gnrique :

; Application des principes indirection et protection des variations


Exercices :
Dessiner le diagramme de squence de lenvoi du message
opClient() une instance de Client
Comment faire sil y a plusieurs composants (Adapt) diffrents, et que
lon veut pouvoir choisir dynamiquement la classe adapte ?
133/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Facade
Problme :
Fournir une interface simplifie (Facade)
Solution gnrique [Wikipedia] :

; Application des principes indirection et protection des variations

134/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Decorator (1/2)
Problme :
Attacher dynamiquement des responsabilits supplmentaires un objet
Illustration sur un exemple :
Exemple dutilisation :
...
Pizza p=new PizzaClassique();
p = new Fromage(p);
p = new Jambon(p);
...

Pizza
calcPrix()
affDescr()

1
#pizza
public DcorateurPizza(Pizza p){
this.pizza = p;
}

PizzaPateFine

PizzaClassique

DcorateurPizza

calcPrix()
affDescr()

calcPrix()
affDescr()

calcPrix()
affDescr()

@override
public double calcPrix(){
return prixFromage
+ super.calcPrix();
}

@override
public double calcPrix(){
return pizza.calcPrix();
}

Fromage

Oignon

Jambon

calcPrix()
affDescr()

calcPrix()
affDescr()

calcPrix()
affDescr()

public Jambon(Pizza p){


super(p);
}

135/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Decorator (2/2)
Solution gnrique :

Remarques :
Composer au lieu dhriter : Ajout
dynamique de responsabilits
ConcreteComponent sans le
modifier
n dcors 2n combinaisons
Inconvnient : Peut gnrer de
nombreux petits objets enveloppes

[Wikipedia]
Utilisation pour dcorer les classes dentre/sortie en Java :
Component : InputStream, OutputStream
ConcreteComponent : FileInputStream, ByteArrayInputStream, ...
Decorator : FilterInputStream, FilterOutputStream
ConcreteDecorator : BufferedInputStream, CheckedInputStream, ...

136/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Adapter, Facade et Decorator

Points communs :
Indirection ; Enveloppe (wrapper)
Protection des variations
Diffrences :
Adapter : Convertit une interface en une autre (attendue par un Client)
Facade : Fournit une interface simplifie
Decorator : Ajoute dynamiquement des responsabilits aux mthodes
dune interface sans la modifier

137/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Composite (1/2)
Problme :
Reprsenter des hirarchies composant/compos et traiter de faon uniforme
les composants et les composs
Illustration sur un exemple :
< ?xml version="1.0" ?>
<livres>
<livre>
<titre>Guerre et paix</titre>
<auteur>Tolsto</auteur>
<nbPages>1572</nbPages>
</livre>
<livre>
<titre>20 ans aprs</titre>
<auteur>Dumas</auteur>
<publication>
<ed>Lebgue</ed>
<date>1848</date>
</publication>
</livre>
</livres>

Comment compter le
nombre de tags ?

:EltCompXML
tag="livres"

:EltCompXML
tag="livre"

:EltSimpleXML
tag="titre"
val="Guerre et paix"

:EltCompXML
tag="livre"

:EltSimpleXML

:EltCompXML
tag="publication"

tag="titre"
val="20 ans aprs"

:EltSimpleXML
tag="auteur"
val="Tolstoi"
:EltSimpleXML
tag="nbPages"
val="1572"

:EltSimpleXML
tag="auteur"
val="Dumas"

:EltSimpleXML
tag="date"
val="1848"

:EltSimpleXML
tag="ed"
val="Lebgue"

138/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Composite (2/2)
Solution gnrique :

Composant

*
fils

attCommun
opCommune()

Feuille

Composite

attCommun
...
opCommune()
...

attCommun
...
opCommune()
...

Exercices :
Dfinir les oprations permettant de :
Compter le nombre de fils dun composant
Compter le nombre de descendants dun composant
Ajouter un fils un composant
Comment accder squentiellement aux fils dun Composite ?
Comment accder squentiellement aux descendants dun Composite ?

139/140 .

Principes et patrons de conception oriente objet

Adapter, Facade, Decorator, Composite

Autres patterns ?
Patterns de cration
Prototype
Builder
Patterns structuraux
Bridge
Flyweight
Proxy
Patterns comportementaux
Visitor
Chain of responsiblity
Interpreter
Mediator
Memento
Template method
140/140 .

You might also like