SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Decorator design
pattern
Présentation
Réalisée par : Ouissal BENAMEUR
Encadrée par : M. Gahi
Plan :
I - Introduction
II - Le problème
III - Le decorator Design Pattern
IV - Exemple
I - Introduction
Le Decorator Design Pattern est l'un des modèles de conception
les plus connus qui décrivent comment résoudre des problèmes
de conception récurrents pour créer des logiciels orientés objet
flexibles et réutilisables en utilisant des objets faciles à mettre
en œuvre, à modifier, tester et réutiliser.
LE PROBLEME..
II- Le problème
1 2
II- Le problème
1 2
3
II- Le problème
1 2
3
4
II- Le problème
1 2
3
4
5
II- Le problème
● Vous souhaitez ajouter un nouveau comportement ou un état à des
objets individuels au moment de l'exécution.
● Si on abuse du principe de l’héritage, on aboutit rapidement à un modèle
complexe contenant un grand nombre de classes.
● L’héritage de classe se définit lors de l’écriture du programme et ne peut
être modifié après la compilation. Or, dans certains cas, on peut vouloir
rajouter des fonctionnalités de façon dynamique.
LA SOLUTION ..
1 - Principe
● Plusieurs ComposantConcret peuvent hériter
de Composant.
● Si l’on souhaite étendre / modifier les
fonctionnalités des ComposantConcret on
peut créer un décorateur.
● Il s’agit d’une classe abstraite héritant de
Composant et ayant un attribut de type
Composant.
● Pour ajouter des fonctionnalités à un
ensemble de ComposantConcret on va créer
des classes DecorateurConcret qui héritent de
Decorateur.
EXEMPLE
<< Interface >>
Window
+draw()
+getDescription()
SimpleWindow
+draw()
+getDescription()
Decorator
+draw()
+getDescription()
Border
HorizontalScrollBar
VerticalScrollBar
IV - Exemple d’implémentation
L’interface Window
La classe SimpleWindow
La classe WindowDecorator
La classe BorderDecorator
La classe HorizontalScrollBarDecorator
La classe VerticalScrollBarDecorator
La classe main
Le résultat de l'exécution
Les consequences
● la conception de classes qui risquent d’évoluer fortement.
● Il faut donc réfléchir aux points sensibles de l’application qui risquent
d’évoluer dès la phase d’analyse.
● Il devient parfois fastidieux de gérer tous les objets créés et de les
décorer. C’est pour cette raison que ce pattern est souvent utilisé avec
le pattern Factory ou Builder qui répondent à cette problématique.
Sources
https://sourcemaking.com/design_patterns/decorator
https://en.wikipedia.org/wiki/Decorator_pattern
http://design-patterns.fr/decorateur
Merci pour votre attention !

Contenu connexe

Tendances

L’INNOVATION PEDAGOGIQUE DANS LES MÉTHODES, APPORTS DES TICS
L’INNOVATION  PEDAGOGIQUE  DANS LES MÉTHODES, APPORTS DES TICSL’INNOVATION  PEDAGOGIQUE  DANS LES MÉTHODES, APPORTS DES TICS
L’INNOVATION PEDAGOGIQUE DANS LES MÉTHODES, APPORTS DES TICSMejdi Ayari
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieMohammed Amine Mostefai
 
e-Learning - Quoi ? Pourquoi ? Vraiment ? Comment ?
e-Learning - Quoi ? Pourquoi ? Vraiment ? Comment ?e-Learning - Quoi ? Pourquoi ? Vraiment ? Comment ?
e-Learning - Quoi ? Pourquoi ? Vraiment ? Comment ?Laurent
 
the naive bayesien classifier
the naive bayesien classifierthe naive bayesien classifier
the naive bayesien classifierAmrane Alik
 
Rapport gestion de stock.pdf
Rapport gestion de stock.pdfRapport gestion de stock.pdf
Rapport gestion de stock.pdfAchrafAntri2
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Heithem Abbes
 
Présentation PFE Mastère PRO
Présentation PFE Mastère PROPrésentation PFE Mastère PRO
Présentation PFE Mastère PROahmedmiha
 
Rédaction d'un cahier des charges web
Rédaction d'un cahier des charges webRédaction d'un cahier des charges web
Rédaction d'un cahier des charges webForestier Mégane
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture Mouna Maazoun
 
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.pdfKhalidKadmiri
 
Les etapes de la migration vers le cloud hybride
Les etapes de la migration vers le cloud hybrideLes etapes de la migration vers le cloud hybride
Les etapes de la migration vers le cloud hybrideSylvain FRANCESCHI
 
Conception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learningConception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learningRouâa Ben Hammouda
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logicielMajid CHADAD
 

Tendances (20)

Offre technique
Offre techniqueOffre technique
Offre technique
 
WordPress
WordPressWordPress
WordPress
 
L’INNOVATION PEDAGOGIQUE DANS LES MÉTHODES, APPORTS DES TICS
L’INNOVATION  PEDAGOGIQUE  DANS LES MÉTHODES, APPORTS DES TICSL’INNOVATION  PEDAGOGIQUE  DANS LES MÉTHODES, APPORTS DES TICS
L’INNOVATION PEDAGOGIQUE DANS LES MÉTHODES, APPORTS DES TICS
 
Rapport de fin formation
Rapport de fin formationRapport de fin formation
Rapport de fin formation
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vie
 
e-Learning - Quoi ? Pourquoi ? Vraiment ? Comment ?
e-Learning - Quoi ? Pourquoi ? Vraiment ? Comment ?e-Learning - Quoi ? Pourquoi ? Vraiment ? Comment ?
e-Learning - Quoi ? Pourquoi ? Vraiment ? Comment ?
 
the naive bayesien classifier
the naive bayesien classifierthe naive bayesien classifier
the naive bayesien classifier
 
Modèle cahier des charges site web
Modèle cahier des charges site webModèle cahier des charges site web
Modèle cahier des charges site web
 
Les différentes phases d’un projet - La phase de planification
Les différentes phases d’un projet - La phase de planificationLes différentes phases d’un projet - La phase de planification
Les différentes phases d’un projet - La phase de planification
 
Rapport gestion de stock.pdf
Rapport gestion de stock.pdfRapport gestion de stock.pdf
Rapport gestion de stock.pdf
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Présentation PFE Mastère PRO
Présentation PFE Mastère PROPrésentation PFE Mastère PRO
Présentation PFE Mastère PRO
 
Rédaction d'un cahier des charges web
Rédaction d'un cahier des charges webRédaction d'un cahier des charges web
Rédaction d'un cahier des charges web
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture
 
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
 
Les etapes de la migration vers le cloud hybride
Les etapes de la migration vers le cloud hybrideLes etapes de la migration vers le cloud hybride
Les etapes de la migration vers le cloud hybride
 
La Biométrie
La BiométrieLa Biométrie
La Biométrie
 
Conception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learningConception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learning
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
 
Les différentes phases d’un projet - La phase d’initialisation
Les différentes phases d’un projet - La phase d’initialisationLes différentes phases d’un projet - La phase d’initialisation
Les différentes phases d’un projet - La phase d’initialisation
 

Similaire à Decorator Design Pattern Presentation

Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfHamida Rebai Trabelsi
 
Revit prg cdfva2013
Revit prg cdfva2013Revit prg cdfva2013
Revit prg cdfva2013jln94
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdfJunior724645
 
Presentation mkframework software craftsmanship a l'afup
Presentation mkframework software craftsmanship a l'afupPresentation mkframework software craftsmanship a l'afup
Presentation mkframework software craftsmanship a l'afupMichael Bertocchi
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
chap3 conception et implementation
chap3 conception et implementation chap3 conception et implementation
chap3 conception et implementation michel martiz
 
Cours de C++, en français, 2002 - Cours 2.5
Cours de C++, en français, 2002 - Cours 2.5Cours de C++, en français, 2002 - Cours 2.5
Cours de C++, en français, 2002 - Cours 2.5Laurent BUNIET
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Adrian CID ALMAGUER
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010MD DAY
 
Présentation PFE Module Article GPAO
Présentation PFE Module Article GPAOPrésentation PFE Module Article GPAO
Présentation PFE Module Article GPAOahmedmiha
 
Génie Logiciel - Unified modeling language
Génie Logiciel - Unified modeling languageGénie Logiciel - Unified modeling language
Génie Logiciel - Unified modeling languageJulien Schneider
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)ISIG
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptPtidej Team
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 

Similaire à Decorator Design Pattern Presentation (20)

Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
Revit prg cdfva2013
Revit prg cdfva2013Revit prg cdfva2013
Revit prg cdfva2013
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf
 
Presentation mkframework software craftsmanship a l'afup
Presentation mkframework software craftsmanship a l'afupPresentation mkframework software craftsmanship a l'afup
Presentation mkframework software craftsmanship a l'afup
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
chap3 conception et implementation
chap3 conception et implementation chap3 conception et implementation
chap3 conception et implementation
 
Cours de C++, en français, 2002 - Cours 2.5
Cours de C++, en français, 2002 - Cours 2.5Cours de C++, en français, 2002 - Cours 2.5
Cours de C++, en français, 2002 - Cours 2.5
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
 
Présentation PFE Module Article GPAO
Présentation PFE Module Article GPAOPrésentation PFE Module Article GPAO
Présentation PFE Module Article GPAO
 
Génie Logiciel - Unified modeling language
Génie Logiciel - Unified modeling languageGénie Logiciel - Unified modeling language
Génie Logiciel - Unified modeling language
 
Mini Projet
Mini Projet Mini Projet
Mini Projet
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.ppt
 
Windev
WindevWindev
Windev
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Lmo02.ppt
Lmo02.pptLmo02.ppt
Lmo02.ppt
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 

Decorator Design Pattern Presentation