1. Design Patterns
Par: Sari Meriem
1
UNIVERSITE de MOHAMED CHERIF MESAADIA
SOUK-AHRAS
Département de Math & Informatique
Exposé sur:
2. Motivation
2Meriem Sari GL à Objet 2 2eme AM GL
Concevoir un logiciel en OO est difficle.
Concevoir un logiciel réutilisable en OO est plus difficile.
Difficile de trouver les objets et les rassembler selon le bon
niveau de granularité.
Difficile de définir les classes, les interfaces et les relations
d’héritage entre eux.
Difficile d’établir les relations entre les classes.
La conception doit être spécifique à un problem mais suffisament
générale pour résoudre des future problèmes.
3. Motivation
3
Les concepteurs Expèrts réutilise des solutions éxistantes pour
résoudre des nouveaux problèmes.
ça cause la Réoccurance des patrons de classes et des différent
objets en communication dans plusieurs systèmes.
L’application de ces patrons nous produise un logiciel fléxible,
élégant et finalement réutilisable.
Meriem Sari GL à Objet 2 2eme AM GL
4. Historique
4
Dans cette présentation on va considéré les patrons de conception
publié dans le livre: «Design Patterns - Elements of Reusable
Object-Oriented Software» par le GOF.
Meriem Sari GL à Objet 2 2eme AM GL
6. Plan
6Meriem Sari GL à Objet 2 2eme AM GL
Définition.
Classification.
State Design Pattern.
Strategy Design Pattern.
Visitor Design Pattern.
7. Définition
7
Selon Christopher Alexander:
Un patrons décrit un problème qui se produit plusieurs fois.
Il décrit le noyau de la solution à ce problème.
Cette solution peut être utilisé un million de fois, sans jamais la
faire de la même manière deux fois.
Meriem Sari GL à Objet 2 2eme AM GL
8. Définition
8
Chaque patron a quatre éléments basiques:
Le nom du patron: il décrit le problème dont ce patron résout pour
faciliter la documentation et la communication entre les concepteurs et les
developpeurs.
Le problème: décrit quand on doit appliquer ce patron.
La solution: décrit l’arrangement générale des éléments (classes et
objets ) qui résout le problème.
Les conséquences: décrit les résultats d’appliquer ce patron dont le
but est d’évaluer ses alternatives , les coûts et les benefices de son
application.
Meriem Sari GL à Objet 2 2eme AM GL
9. Classification
9
Les patrons de conception se diffèrent dans leurs granularité et
niveau d’abstraction.
Ils sont classifié selon deux critères:
Par but i.e. que fait le patron.
Patrons de Création: concerne le processe de création des objets.
Patrons de Structure: manipule la composition des classes ou objets.
Patrons de Comportement: s’occupe de la façon comment les classes
et les objets s’interagissent .
Par scope i.e. est. ce que ce patron s’applique sur des classes ou
des objets.
Meriem Sari GL à Objet 2 2eme AM GL
11. Design Patterns
11
Dans cette présentation on va abbordé trois patrons de
comportement qui sont:
State design pattern.
Strategy design pattern.
Visitor design pattern.
Meriem Sari GL à Objet 2 2eme AM GL
13. Définition
13
Connu comme : Objects for States.
Le comportement d’un objet dépend de son état.
Permet à un objet de changer son comportement quand son état
interne se change.
Ce changement se fait lors de l’éxécution.
Encapsule les différent comportements d’un meme objet basé sur
ses états.
Meriem Sari GL à Objet 2 2eme AM GL
14. Objectif
14
Minimise l’utilisation des branchements conditionels qui résulte le
changement d’état d’un objet.
Met chaque branche d’une instruction conditionelle dans une
classe séparée .
Il nous permet de traiter les états d’un objet comme des objets
indépendents des autres objets.
Meriem Sari GL à Objet 2 2eme AM GL
16. Structure (2)
16
Context: définit l’interface d’intérét pour le client .
State: définit l’interface pour encapsuler le comportement associé à un
état particulié de l’objet Context.
Concrete State Subclass: chaque sous classe implemente un
comportement associé à un état de l’objet Context.
Meriem Sari GL à Objet 2 2eme AM GL
17. Conséquences
17
Le State pattern met tout les comportements associés à un état
particulié dans un seul objet.
Quand un objet definit son état courrant de façcon interne, son
transition d’état a aucune représentation éxplicite.
Les objets State peuvent etre partagé entre des objets Contexts
(Flyweight).
Meriem Sari GL à Objet 2 2eme AM GL
21. Strategy Pattern
21Meriem Sari GL à Objet 2 2eme AM GL
Définition.
Objectif.
Structure.
Conséquences.
Exemple.
22. Définition
22Meriem Sari GL à Objet 2 2eme AM GL
Connu comme: Policy pattern.
Permet au comportement d'un algorithme d'être choisi au temps
d'exécution.
Change l’algorithme en éxécution de l’objet Contexte.
Laisse l'algorithme change indépendamment des clients qui
l‘éxécute.
Definit une famille d’algorithmes et encapsule chaqu’une.
Permet au algorithmes d’être interchangeable entre les familles.
23. Objectif
23Meriem Sari GL à Objet 2 2eme AM GL
Configurer beaucoup de classes relatives qui diffèrent seulement
dans leur comportement.
Très utile dans les algorithmes basé sur la validation des données.
Type de données.
La source de données.
Le choix de l’utilisateur…
Utilisé par d’autres objets dans le meme système ou dans des
systèmes differents sans dupliqué le code.
25. Structure (2)
25Meriem Sari GL à Objet 2 2eme AM GL
Context : maintient une référence sur l’objet Strategy et se manipule à
l’aide d’un objet ConcreteStrategy.
Strategy: déclare une intérface commune pour tout les algorithmes
supportés.
ConcreteStrategy: implémente l’algorithme en utilisant l’intérface
Strategy.
26. Conséquences
26Meriem Sari GL à Objet 2 2eme AM GL
L’encapsulation de tout les comportements dans une seule classe
rendre difficile d’éviter les branchements conditionels.
Elimine l’utilisation des branchements conditionels.
Fournit des differentes implémentations pour un meme
comportement.
Augmente le nombre des objets dans une application.
30. Visitor Pattern
30Meriem Sari GL à Objet 2 2eme AM GL
Définition.
Objectif.
Structure.
Conséquences.
Exemple.
31. Définition
31Meriem Sari GL à Objet 2 2eme AM GL
Représente une opération faite sur les éléments de structure de
l’object.
Permet l’ajout des nouvelles opérations sans changer la structure
de l’objet.
Sépare l’algorithme de la structure de l’objet sur lequel il
s’éxécute.
Permet l’ajout des nouvelles fonctions virtuelles dans une classe
sans la modifier.
Il respécte le principe ouvert/fermé .
32. Objectif
32Meriem Sari GL à Objet 2 2eme AM GL
Considérer un compilateur qui représente les programmes sous
forme d’un arbre syntaxique.
On a besoin d’éxécuter des opérations sur ces arbres (configurer
les noeuds).
Compiler + Configurer = un système 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.
34. Structure (2)
34Meriem Sari GL à Objet 2 2eme AM GL
Visitor: déclare une opération de Visit pour chaque classe de
ConcreteElement .
le nom et la signature de l’opération identifis la classe qui envoie la
demande de Visit au visitor.
ConcreteVisitor: implemente chaque opération déclaré par Visitor.
Element: definit une opération Accept qui prend en argument un
visitor.
ConcreteElement: implemente une opération Accept qui prend en
argument un visitor.
35. Structure (3)
35Meriem Sari GL à Objet 2 2eme AM GL
Considérer deux objets: un « élément" et un "visitor".
un élément a une méthode accept() qui prend le visitor comme un
argument.
La méthode accept() appèlle la méthode visit() de visitor.
L’élément lui meme se passe en argument à la méthode visit() .
41. Conclusion
41
Si nous n'étudions pas les patrons de conception au niveau de la
programmation OO, nous ne pourrons pas améliorer les logiciel, et il
sera plus difficile de les concevoir et réaliser.
Meriem Sari GL à Objet 2 2eme AM GL