Vous êtes sur la page 1sur 42

UNIVERSITE de MOHAMED CHERIF MESAADIA

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.

Le problme: dcrit quand on doit appliquer ce patron.


La solution: dcrit larrangement gnrale des lments
(classes et objets ) qui rsout le problme.

Les consquences: dcrit les rsultats dappliquer ce


patron dont le but est dvaluer ses alternatives , les cots
et les benefices de son application.
Meriem Sari
2eme AM GL

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.

Patrons de Structure: manipule la composition des


classes ou objets.

Patrons de Comportement: soccupe de la faon


comment les classes et les objets sinteragissent .

Par scope i.e. est. ce que ce patron sapplique sur


des classes ou des objets.
9

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.

Concrete State Subclass: chaque sous classe


implemente un comportement associ un tat 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.

Strategy: dclare une intrface commune pour tout les


algorithmes supports.

ConcreteStrategy: implmente lalgorithme en utilisant


lintrface Strategy.

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.

ConcreteVisitor: implemente chaque opration dclar


par Visitor.

Element: definit une opration Accept qui prend en


argument un visitor.

ConcreteElement: implemente une opration Accept qui


prend en argument un visitor.
Meriem Sari
2eme AM GL

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

Si nous n'tudions pas les patrons de conception au


niveau de la programmation OO, nous ne pourrons pas
amliorer les logiciel, et il sera plus difficile de les
concevoir et raliser.

Meriem Sari
2eme AM GL

GL Objet 2

41

Acknowledgment

Meri Pour Votre Attention

Meriem Sari
2eme AM GL

GL Objet 2

42

Vous aimerez peut-être aussi