SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
LES DESIGN PATTERNS
PATTERNS COMPORTEMENTAUX
PART1
SOMMAIRE
PRÉSENTATION PATTERNS COMPORTEMENTAUX

• Définition
LES PATTERNS

•
•
•
•
•

Strategy
State
Visitor
Iterator
Observer

QUIZZ

• Petit test à chaud :p
2
PRÉSENTATION
PATTERNS
COMPORTEMENTAUX
PRÉSENTATION PATTERNS COMPORTEMENTAUX
DÉFINITION

+ LES TROIS FAMILLES (SUIVANT LES DÉCOUPAGES…)





CONSTRUCTION
STRUCTURE
COMPORTEMENT

+ OBJECTIF


FOURNIR DES SOLUTIONS POUR DISTRIBUER LES TRAITEMENTS ET LES
ALGORITHMES ENTRE LES OBJETS

+ MOYENS


DISTRIBUTION PAR DÉLÉGATION OU HÉRITAGE

4
LES PATTERNS
LE PATTERN STRATEGY
STRATEGY
VUE GLOBALE

PROBLÈME

• Un objet doit effectuer plusieurs traitements différents, dépendant
d’une variable ou d’un état
DESCRIPTION

• Vous avez une classe dédiée à une tâche spécifique. Dans un
premier temps, celle-ci effectue une opération suivant un
algorithme bien précis. Cependant, avec le temps, cette classe
sera amenée à évoluer, et elle suivra plusieurs algorithmes, tout
en effectuant la même tâche de base.
• Ex: format(), excecute(),…
SOLUTION

• Délégation du traitement à une classe externe et création d’une
famille d’algorithme
6
STRATEGY

REPRÉSENTATION UML

7
STRATEGY
EXEMPLE UML

8
STRATEGY

EXEMPLE CODE

+ Voir code dans IDE

9
LES PATTERNS
LE PATTERN STATE
STATE

VUE GLOBALE
PROBLÈME

• Le comportement d’un objet est susceptible de changer en
fonction de son état (on ne peut pas clôturer un compte qui n’est
pas ouvert…)
DESCRIPTION

• Le pattern State permet à un objet d’adapter son comportement
en fonction de son état interne
• L’idée se représente bien par les diagrammes d’état UML
SOLUTION

• On délègue à des classes « état » le fait d’implémenter les
différent comportement de l’objet
11
STATE

REPRÉSENTATION UML

12
STATE

LES CLASSES
StateMachine

• Classe concrète décrivant des objets qui sont des machines à
états. Cette classe maintient une référence sur l’interface State.
State

• Interface à implémenter regroupant les comportements qui sont
dépendants de l’état de l’objet
ConcreteState

• Les classes qui implémentent State et définissent les divers
comportements
13
STATE

EXEMPLE UML

14
STATE

EXEMPLE CODE

+ http://rpouiller.developpez.com/tutoriel/java/design-patterns-gang-offour/?page=page_4#LVI-H

15
LES PATTERNS
LE PATTERN VISITOR
VISITOR

VUE GLOBALE
PROBLÈME

• Vous voulez laissez la possibilité d’étendre le comportement de
votre objet sans pour autant en modifier le code
DESCRIPTION

• le but est de laisser l’opportunité à des classes Visiteur d’accéder
à l’instance de l’objet visiter pour modifier son comportement.
• C’est un design qui est souvent associé au design pattern
Composite
SOLUTION

• Tous les objets qui acceptent que leur comportement soit étendu
propose une méthode accessible au visiteur.
17
VISITOR

REPRÉSENTATION UML

18
VISITOR

LES CLASSES
Visitor

• définit l'interface d'une visiteur. Elle déclare les méthodes de visite
des sous-classes concrètes de Element.
ConcreteVisitor

• sont des sous-classes concrètes de l'interface Visiteur. Elles
implémentent des comportements de visite des Element.
Element

• définit l'interface d'une élément. Elle déclare la méthode de
réception d'un objet Visiteur
ConcreteElement

• sont des sous-classes concrètes de l'interface Element. Elles
implémentent la méthode de réception. Elles possèdent des
données/attributs et méthodes différents.
19
VISITOR

EXEMPLE UML

20
VISITOR

EXEMPLE CODE

+ http://www.programcreek.com/2011/05/visitor-design-pattern-example/

21
LES PATTERNS
LE PATTERN ITERATOR
ITERATOR

VUE GLOBALE
PROBLÈME

• Parcourir séquentiellement les éléments d'un objet composé.
DESCRIPTION

• Le système doit parcourir les éléments d'un objet complexe. La
classe de l'objet complexe peut varier.
• Cela est le cas des classes représentant des listes et des
ensembles en Java. Elles ont une méthode retournant un
itérateur, qui permet de parcourir les éléments.
SOLUTION

• Le Design Pattern permet d'isoler le parcours d'un agrégat dans
une classe Iterator
23
ITERATOR

REPRÉSENTATION UML

24
ITERATOR
LES CLASSES

Compose

• définit l'interface d'un objet composé permettant de créer un
Iterateur.
ConcreteCompose

• est une sous-classe de l'interface Compose. Elle est composée
d'éléments et implémente la méthode de création d'un Iterateur.
Iterateur

• définit l'interface de l'itérateur, qui permet d'accéder aux éléments
de l'objet Compose.
ConcreteIterateur

• est une sous-classe de l'inteface Iterateur. Elle fournit une
implémentation permettant de parcourir les éléments de
ConcreteCompose. Elle conserve la trace de la position courante.
25
ITERATOR

EXEMPLE CODE

+ http://www.avajava.com/tutorials/lessons/iterator-pattern.html
+ http://blog.zenika.com/index.php?post/2010/10/31/Au-coeur-du-JDK-%3A-linterface-Iterable

26
LES PATTERNS
LE PATTERN OBSERVER
OBSERVER
VUE GLOBALE

PROBLÈME

• Des objets dépendent de l’état d’un autre objet et veulent être
notifié d’un changement d’état de ce dernier
DESCRIPTION

• Le pattern Obserever a pour objectif de construire une
dépendance entre un sujet et des observateurs de sorte que
chaque modification du sujet soit notifiée aux observateurs afin
qu’il puissent mettre à jour leur état.
• Ex: Listener Swing,…
SOLUTION

• Ajouter une méthode update à tous les Observer et gérer une
liste d’Observer au niveau du Sujet
28
OBSERVER

REPRÉSENTATION UML

29
OBSERVER
LES CLASSES
Subject

• Classe abstraite qui introduit l’association avec les Observers
Observer

• Interface à implémenter pour recevoir des notifications
ConcreteSubject

• Classe d’implémentation d’un Subject. C’est lui qui envoie une
notif quand son état est modifié
ConcreteObserver

• Maintient une référence vers le subject et implémente la méthode
update(). Elle peut aussi demandé des infos au Subject sur son
état.
30
OBSERVER
EXEMPLE

+ http://javapostsforlearning.blogspot.in/2013/02/observer-design-pattern-injava.html

+ Petit exemple Swing sur IDE

31
QUIZZ
QUIZZ

TEST À CHAUD 

Q: Quel Objet ne fait pas partie du Design Pattern
Iterator:
1. Iterator

2. ConcreteIterator
3. Aggregate
4. Invoker

© SQLI GROUP

33
QUIZZ

TEST À CHAUD 

Q: Quel Objet ne fait pas partie du Design Pattern
Observer:
1. Observer

2. Subject
3. ConcreteSubject
4. Observed

© SQLI GROUP

34
QUIZZ

TEST À CHAUD 

Q: Quel Objet ne fait pas partie du Design Pattern
State:
1. ConcretStrategyA

2. Subject
3. ConcretStrategyB
4. Strategy

© SQLI GROUP

35
QUIZZ

TEST À CHAUD 

Q: Quel est le Design Pattern qui défini une famille
d’algorithme, les encapsule et rend chacun
interchangeables. Permettant à l’algo de changer
indépendamment du client qui l’utilise ?
1. State

2. Strategy
3. Observer
4. Visitor

© SQLI GROUP

36
LES DESIGN PATTERNS – PART1
QUESTIONS / REPONSES

37

Contenu connexe

Tendances

Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Sofien Benrhouma
 
Plateforme d’e learning
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learning
El Aber Haythem
 
Créer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdfCréer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdf
KhalidKadmiri
 
La spécification des besoins
La spécification des besoinsLa spécification des besoins
La spécification des besoins
Ismahen Traya
 
Méthodes agiles vs méthodes classiques
Méthodes agiles vs méthodes classiquesMéthodes agiles vs méthodes classiques
Méthodes agiles vs méthodes classiques
Sirine Barguaoui
 

Tendances (20)

Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
 
Plateforme d’e learning
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learning
 
Méthode d'Agile: Scrum
Méthode d'Agile: ScrumMéthode d'Agile: Scrum
Méthode d'Agile: Scrum
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Créer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdfCréer une application Cloud native_v7.pdf
Créer une application Cloud native_v7.pdf
 
La spécification des besoins
La spécification des besoinsLa spécification des besoins
La spécification des besoins
 
Présentation (Mémoire fin étude )
Présentation (Mémoire  fin étude )Présentation (Mémoire  fin étude )
Présentation (Mémoire fin étude )
 
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
 
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats
 
software engineering
software engineeringsoftware engineering
software engineering
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Data mining - Classification - arbres de décision
Data mining - Classification - arbres de décisionData mining - Classification - arbres de décision
Data mining - Classification - arbres de décision
 
Le Web3.0
Le Web3.0Le Web3.0
Le Web3.0
 
De l'expression de besoins vers spécifications de la solution
De l'expression de besoins vers spécifications de la solutionDe l'expression de besoins vers spécifications de la solution
De l'expression de besoins vers spécifications de la solution
 
Presentation de gestionnaire de bibliothèque
Presentation de gestionnaire de bibliothèquePresentation de gestionnaire de bibliothèque
Presentation de gestionnaire de bibliothèque
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
Méthodes agiles vs méthodes classiques
Méthodes agiles vs méthodes classiquesMéthodes agiles vs méthodes classiques
Méthodes agiles vs méthodes classiques
 

En vedette

En vedette (8)

Eolfc 2013 crosswind farms - local food processing considerations
Eolfc 2013   crosswind farms - local food processing considerationsEolfc 2013   crosswind farms - local food processing considerations
Eolfc 2013 crosswind farms - local food processing considerations
 
Diseño web
Diseño webDiseño web
Diseño web
 
Eolfc 2013 kawartha country wines - experiences in innovative local food proc...
Eolfc 2013 kawartha country wines - experiences in innovative local food proc...Eolfc 2013 kawartha country wines - experiences in innovative local food proc...
Eolfc 2013 kawartha country wines - experiences in innovative local food proc...
 
Interacao e protocolo eSquirt do Projeto Cooltown
Interacao e protocolo eSquirt do Projeto CooltownInteracao e protocolo eSquirt do Projeto Cooltown
Interacao e protocolo eSquirt do Projeto Cooltown
 
Teori Graph : vektor
Teori Graph : vektorTeori Graph : vektor
Teori Graph : vektor
 
Design specifications pdf
Design specifications pdfDesign specifications pdf
Design specifications pdf
 
áReas de regiones poligonales, perímetros
áReas de regiones poligonales, perímetrosáReas de regiones poligonales, perímetros
áReas de regiones poligonales, perímetros
 
Trabajo sobre Lance Armstrong
Trabajo sobre Lance ArmstrongTrabajo sobre Lance Armstrong
Trabajo sobre Lance Armstrong
 

Similaire à Design patterns comportementaux

Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof fr
It Academy
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
Mansouri Khalifa
 

Similaire à Design patterns comportementaux (20)

Cours_Java.pdf
Cours_Java.pdfCours_Java.pdf
Cours_Java.pdf
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof fr
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
 
Observer pattern
Observer patternObserver pattern
Observer pattern
 
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
Design patterns et Design Emergeant - Micro Days - Modern Software Developmen...
 
Cours uml
Cours umlCours uml
Cours uml
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdf
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
Designs Patterns
Designs PatternsDesigns Patterns
Designs Patterns
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Patrons de conception
Patrons de conceptionPatrons de conception
Patrons de conception
 
Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence API
 
Les Classe en Java
Les Classe en JavaLes Classe en Java
Les Classe en Java
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Chapitre4_ConceptionDynamique (1).pptx
Chapitre4_ConceptionDynamique (1).pptxChapitre4_ConceptionDynamique (1).pptx
Chapitre4_ConceptionDynamique (1).pptx
 
POO-Cours.pdf
POO-Cours.pdfPOO-Cours.pdf
POO-Cours.pdf
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 

Design patterns comportementaux

  • 1. LES DESIGN PATTERNS PATTERNS COMPORTEMENTAUX PART1
  • 2. SOMMAIRE PRÉSENTATION PATTERNS COMPORTEMENTAUX • Définition LES PATTERNS • • • • • Strategy State Visitor Iterator Observer QUIZZ • Petit test à chaud :p 2
  • 4. PRÉSENTATION PATTERNS COMPORTEMENTAUX DÉFINITION + LES TROIS FAMILLES (SUIVANT LES DÉCOUPAGES…)    CONSTRUCTION STRUCTURE COMPORTEMENT + OBJECTIF  FOURNIR DES SOLUTIONS POUR DISTRIBUER LES TRAITEMENTS ET LES ALGORITHMES ENTRE LES OBJETS + MOYENS  DISTRIBUTION PAR DÉLÉGATION OU HÉRITAGE 4
  • 6. STRATEGY VUE GLOBALE PROBLÈME • Un objet doit effectuer plusieurs traitements différents, dépendant d’une variable ou d’un état DESCRIPTION • Vous avez une classe dédiée à une tâche spécifique. Dans un premier temps, celle-ci effectue une opération suivant un algorithme bien précis. Cependant, avec le temps, cette classe sera amenée à évoluer, et elle suivra plusieurs algorithmes, tout en effectuant la même tâche de base. • Ex: format(), excecute(),… SOLUTION • Délégation du traitement à une classe externe et création d’une famille d’algorithme 6
  • 11. STATE VUE GLOBALE PROBLÈME • Le comportement d’un objet est susceptible de changer en fonction de son état (on ne peut pas clôturer un compte qui n’est pas ouvert…) DESCRIPTION • Le pattern State permet à un objet d’adapter son comportement en fonction de son état interne • L’idée se représente bien par les diagrammes d’état UML SOLUTION • On délègue à des classes « état » le fait d’implémenter les différent comportement de l’objet 11
  • 13. STATE LES CLASSES StateMachine • Classe concrète décrivant des objets qui sont des machines à états. Cette classe maintient une référence sur l’interface State. State • Interface à implémenter regroupant les comportements qui sont dépendants de l’état de l’objet ConcreteState • Les classes qui implémentent State et définissent les divers comportements 13
  • 17. VISITOR VUE GLOBALE PROBLÈME • Vous voulez laissez la possibilité d’étendre le comportement de votre objet sans pour autant en modifier le code DESCRIPTION • le but est de laisser l’opportunité à des classes Visiteur d’accéder à l’instance de l’objet visiter pour modifier son comportement. • C’est un design qui est souvent associé au design pattern Composite SOLUTION • Tous les objets qui acceptent que leur comportement soit étendu propose une méthode accessible au visiteur. 17
  • 19. VISITOR LES CLASSES Visitor • définit l'interface d'une visiteur. Elle déclare les méthodes de visite des sous-classes concrètes de Element. ConcreteVisitor • sont des sous-classes concrètes de l'interface Visiteur. Elles implémentent des comportements de visite des Element. Element • définit l'interface d'une élément. Elle déclare la méthode de réception d'un objet Visiteur ConcreteElement • sont des sous-classes concrètes de l'interface Element. Elles implémentent la méthode de réception. Elles possèdent des données/attributs et méthodes différents. 19
  • 23. ITERATOR VUE GLOBALE PROBLÈME • Parcourir séquentiellement les éléments d'un objet composé. DESCRIPTION • Le système doit parcourir les éléments d'un objet complexe. La classe de l'objet complexe peut varier. • Cela est le cas des classes représentant des listes et des ensembles en Java. Elles ont une méthode retournant un itérateur, qui permet de parcourir les éléments. SOLUTION • Le Design Pattern permet d'isoler le parcours d'un agrégat dans une classe Iterator 23
  • 25. ITERATOR LES CLASSES Compose • définit l'interface d'un objet composé permettant de créer un Iterateur. ConcreteCompose • est une sous-classe de l'interface Compose. Elle est composée d'éléments et implémente la méthode de création d'un Iterateur. Iterateur • définit l'interface de l'itérateur, qui permet d'accéder aux éléments de l'objet Compose. ConcreteIterateur • est une sous-classe de l'inteface Iterateur. Elle fournit une implémentation permettant de parcourir les éléments de ConcreteCompose. Elle conserve la trace de la position courante. 25
  • 26. ITERATOR EXEMPLE CODE + http://www.avajava.com/tutorials/lessons/iterator-pattern.html + http://blog.zenika.com/index.php?post/2010/10/31/Au-coeur-du-JDK-%3A-linterface-Iterable 26
  • 28. OBSERVER VUE GLOBALE PROBLÈME • Des objets dépendent de l’état d’un autre objet et veulent être notifié d’un changement d’état de ce dernier DESCRIPTION • Le pattern Obserever a pour objectif de construire une dépendance entre un sujet et des observateurs de sorte que chaque modification du sujet soit notifiée aux observateurs afin qu’il puissent mettre à jour leur état. • Ex: Listener Swing,… SOLUTION • Ajouter une méthode update à tous les Observer et gérer une liste d’Observer au niveau du Sujet 28
  • 30. OBSERVER LES CLASSES Subject • Classe abstraite qui introduit l’association avec les Observers Observer • Interface à implémenter pour recevoir des notifications ConcreteSubject • Classe d’implémentation d’un Subject. C’est lui qui envoie une notif quand son état est modifié ConcreteObserver • Maintient une référence vers le subject et implémente la méthode update(). Elle peut aussi demandé des infos au Subject sur son état. 30
  • 32. QUIZZ
  • 33. QUIZZ TEST À CHAUD  Q: Quel Objet ne fait pas partie du Design Pattern Iterator: 1. Iterator 2. ConcreteIterator 3. Aggregate 4. Invoker © SQLI GROUP 33
  • 34. QUIZZ TEST À CHAUD  Q: Quel Objet ne fait pas partie du Design Pattern Observer: 1. Observer 2. Subject 3. ConcreteSubject 4. Observed © SQLI GROUP 34
  • 35. QUIZZ TEST À CHAUD  Q: Quel Objet ne fait pas partie du Design Pattern State: 1. ConcretStrategyA 2. Subject 3. ConcretStrategyB 4. Strategy © SQLI GROUP 35
  • 36. QUIZZ TEST À CHAUD  Q: Quel est le Design Pattern qui défini une famille d’algorithme, les encapsule et rend chacun interchangeables. Permettant à l’algo de changer indépendamment du client qui l’utilise ? 1. State 2. Strategy 3. Observer 4. Visitor © SQLI GROUP 36
  • 37. LES DESIGN PATTERNS – PART1 QUESTIONS / REPONSES 37