Académique Documents
Professionnel Documents
Culture Documents
SOUK-AHRAS
Dpartement de Math & Informatique
Expos sur:
Design Patterns
Par: Sari Meriem
Motivation
Concevoir un logiciel en OO est difficle.
Concevoir un logiciel rutilisable en OO est plus
difficile.
Difficile de trouver les objets et les rassembler
selon le bon niveau de granularit.
Difficile de dfinir les classes, les interfaces et les
relations dhritage entre eux.
Difficile dtablir les relations entre les classes.
La conception doit tre spcifique un problem
mais suffisament gnrale pour rsoudre des future
problmes.
Meriem Sari
2eme AM GL
GL Objet 2
Motivation
Les concepteurs Exprts rutilise des solutions
xistantes pour rsoudre des nouveaux problmes.
a cause la Roccurance des patrons de classes et
des diffrent objets en communication dans plusieurs
systmes.
Lapplication de ces patrons nous produise un logiciel
flxible, lgant et finalement rutilisable.
Meriem Sari
2eme AM GL
GL Objet 2
Historique
Dans cette prsentation on va considr les patrons
de conception publi dans le livre: Design Patterns Elements of Reusable Object-Oriented Software
par le GOF.
Meriem Sari
2eme AM GL
GL Objet 2
Historique
Erich Gamma
Meriem Sari
2eme AM GL
Ralph Johnson
GL Objet 2
John Vlissides
Richard Helm
Plan
Dfinition.
Classification.
State Design Pattern.
Strategy Design Pattern.
Visitor Design Pattern.
Meriem Sari
2eme AM GL
GL Objet 2
Dfinition
Selon Christopher Alexander:
Un patrons dcrit un problme qui se produit
plusieurs fois.
Il dcrit le noyau de la solution ce problme.
Cette solution peut tre utilis un million de fois,
sans jamais la faire de la mme manire deux fois.
Meriem Sari
2eme AM GL
GL Objet 2
Dfinition
Chaque patron a quatre lments basiques:
Le nom du patron: il dcrit le problme dont ce patron
rsout pour faciliter la documentation et la communication
entre les concepteurs et les developpeurs.
GL Objet 2
Classification
Les patrons de conception se diffrent dans leurs
granularit et niveau dabstraction.
Ils sont classifi selon deux critres:
Par but i.e. que fait le patron.
Patrons de Cration: concerne le processe de cration
des objets.
Meriem Sari
2eme AM GL
GL Objet 2
Classification
Meriem Sari
2eme AM GL
GL Objet 2
10
Design Patterns
Dans cette prsentation on va abbord trois patrons
de comportement qui sont:
State design pattern.
Strategy design pattern.
Visitor design pattern.
Meriem Sari
2eme AM GL
GL Objet 2
11
State Pattern
Dfinition.
Objectif.
Structure.
Consquences.
Exemple.
Meriem Sari
2eme AM GL
GL Objet 2
12
Dfinition
Connu comme : Objects for States.
Le comportement dun objet dpend de son tat.
Permet un objet de changer son comportement
quand son tat interne se change.
Ce changement se fait lors de lxcution.
Encapsule les diffrent comportements dun meme
objet bas sur ses tats.
Meriem Sari
2eme AM GL
GL Objet 2
13
Objectif
Minimise lutilisation des branchements conditionels
qui rsulte le changement dtat dun objet.
Met chaque branche dune instruction conditionelle
dans une classe spare .
Il nous permet de traiter les tats dun objet comme
des objets indpendents des autres objets.
Meriem Sari
2eme AM GL
GL Objet 2
14
Structure (1)
Meriem Sari
2eme AM GL
GL Objet 2
15
Structure (2)
Context: dfinit linterface dintrt pour le client .
State: dfinit linterface pour encapsuler le
comportement associ un tat particuli de lobjet
Context.
Meriem Sari
2eme AM GL
GL Objet 2
16
Consquences
Le State pattern met tout les comportements
associs un tat particuli dans un seul objet.
Quand un objet definit son tat courrant de facon
interne, son transition dtat a aucune reprsentation
xplicite.
Les objets State peuvent etre partag entre des
objets Contexts (Flyweight).
Meriem Sari
2eme AM GL
GL Objet 2
17
Exemple (1)
Meriem Sari
2eme AM GL
GL Objet 2
18
Exemple (Implmentation)
Meriem Sari
2eme AM GL
GL Objet 2
19
Exemple (Implmentation)
Meriem Sari
2eme AM GL
GL Objet 2
20
Strategy Pattern
Dfinition.
Objectif.
Structure.
Consquences.
Exemple.
Meriem Sari
2eme AM GL
GL Objet 2
21
Dfinition
Connu comme: Policy pattern.
Permet au comportement d'un algorithme d'tre
choisi au temps d'excution.
Change lalgorithme en xcution de lobjet
Contexte.
Laisse l'algorithme change indpendamment des
clients qui lxcute.
Definit une famille dalgorithmes et encapsule
chaquune.
Permet au algorithmes dtre interchangeable entre
22
Meriem Sari
2eme AM GL
GL Objet 2
Objectif
Configurer beaucoup de classes relatives qui
diffrent seulement dans leur comportement.
Trs utile dans les algorithmes bas sur la validation
des donnes.
Type de donnes.
La source de donnes.
Le choix de lutilisateur
Utilis par dautres objets dans le meme systme ou
dans des systmes differents sans dupliqu le code.
Meriem Sari
2eme AM GL
GL Objet 2
23
Structure (1)
Meriem Sari
2eme AM GL
GL Objet 2
24
Structure (2)
Context : maintient une rfrence sur lobjet Strategy et
se manipule laide dun objet ConcreteStrategy.
Meriem Sari
2eme AM GL
GL Objet 2
25
Consquences
Lencapsulation de tout les comportements dans
une seule classe rendre difficile dviter les
branchements conditionels.
Elimine lutilisation des branchements conditionels.
Fournit des differentes implmentations pour un
meme comportement.
Augmente le nombre des objets dans une
application.
Meriem Sari
2eme AM GL
GL Objet 2
26
Exemple (1)
Calculator
Meriem Sari
2eme AM GL
GL Objet 2
27
Exemple (Implmentation)
Meriem Sari
2eme AM GL
GL Objet 2
28
Exemple (Implmentation)
Meriem Sari
2eme AM GL
GL Objet 2
29
Visitor Pattern
Dfinition.
Objectif.
Structure.
Consquences.
Exemple.
Meriem Sari
2eme AM GL
GL Objet 2
30
Dfinition
Reprsente une opration faite sur les lments de
structure de lobject.
Permet lajout des nouvelles oprations sans changer
la structure de lobjet.
Spare lalgorithme de la structure de lobjet sur
lequel il sxcute.
Permet lajout des nouvelles fonctions virtuelles dans
une classe sans la modifier.
Il respcte le principe ouvert/ferm .
Meriem Sari
2eme AM GL
GL Objet 2
31
Objectif
Considrer un compilateur qui reprsente les
programmes sous forme dun arbre syntaxique.
On a besoin dxcuter des oprations sur ces arbres
(configurer les noeuds).
Compiler + Configurer = un systme difficile
comprendre (complexe).
Le Visitor design pattern nous permet de configurer
les arbre sans polluer le code source du programme
originale qui est le compilateur.
Meriem Sari
2eme AM GL
GL Objet 2
32
Structure (1)
Meriem Sari
2eme AM GL
GL Objet 2
33
Structure (2)
Visitor: dclare une opration de Visit pour chaque classe
de ConcreteElement .
le nom et la signature de lopration identifis la classe qui
envoie la demande de Visit au visitor.
GL Objet 2
34
Structure (3)
Considrer deux objets: un lment" et un
"visitor".
un lment a une mthode accept() qui prend le
visitor comme un argument.
La mthode accept() applle la mthode visit() de
visitor.
Llment lui meme se passe en argument la
mthode visit() .
Meriem Sari
2eme AM GL
GL Objet 2
35
Exemple (1)
Meriem Sari
2eme AM GL
GL Objet 2
36
Exemple (Implmentation)
Meriem Sari
2eme AM GL
GL Objet 2
37
Exemple (Implmentation)
Meriem Sari
2eme AM GL
GL Objet 2
38
Exemple (Implmentation)
Meriem Sari
2eme AM GL
GL Objet 2
39
Exemple (Implmentation)
Meriem Sari
2eme AM GL
GL Objet 2
40
Conclusion
Meriem Sari
2eme AM GL
GL Objet 2
41
Acknowledgment
Meriem Sari
2eme AM GL
GL Objet 2
42