SlideShare una empresa de Scribd logo
1 de 52
1
Patrons de conception
Réalisé par :
Mohamed omri
DMRIM-SIW
2
Plan
 Introduction
 Premier exemple
 Principes et classification
 Présentation des patrons de création les
plus significatifs
 Conclusion
Problématique
 Concevoir un logiciel en OO est difficile.
 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 problème mais
suffisamment générale pour résoudre des future
problèmes.
3
4
Motivations
 Les besoins pour une bonne conception et
du bon code :
 Extensibilité
 Flexibilité
 Maintenabilité
 Réutilisabilité
 Les qualités internes
Meilleure spécification, construction, documentation
5
Motivations (suite)
 Augmenter la cohésion du code
 C’est d’augmenter le degré de corrélation des données entre elles.
 Diminuer le couplage
 Le couplage est le nombre de liens entre les données de classes
ou fonctions différentes.
 On minimise le couplage en maximisant la cohésion, et en
créant des interfaces qui seront les points centraux
d’accès aux autres données.
6
Design Pattern : principe
 Description d’une solution à un problème général et
récurrent de conception dans un contexte particulier
 Description des objets communicants et des classes
 Indépendant d’une application ou spécifique
 Certains patterns sont relatifs à la concurrence, à la
programmation distribuée, temps-réel
 Traduction : patron de conception
 Tous les patrons visent à renforcer la cohésion et à
diminuer le couplage
7
Historique & définition
Gang of Four : Erich Gamma, Richard Helm,
Ralph Johnson, John Vlissides
Un Design Pattern nomme, abstrait et
identifie les aspects essentiels d’une
structuration récurrente, ce qui permet de
créer une modélisation orientée objet
réutilisable
8
Design Patterns : bénéfices globaux
 Standardisation de certains concepts en
modélisation
 Capture de l’expérience de conception
 Réutilisation de solutions élégantes et
efficaces vis-à-vis du problème
 Amélioration de la documentation
 Facilité de maintenance
Types de patrons de conception :
 Les patrons sont regroupés en 3 catégories qui sont :
 Patrons de création
 Concernent le processus de la création d'objets
 Les patrons de création aident à créer des objets pour
vous, au lieu d’avoir à instancier les objets directement.
 Patrons de structure
 Concernent la composition de classes et d'objets
 Les patrons de structure aident à composer des groupes
d’objets en des structures plus larges, telles que des
interfaces utilisateur complexes.
9
Types de patrons de conception :
 Patrons de comportement
 Concernent l'interaction des classes et des objets
 Les patrons de comportement aident à définir la
communication entre les objets du système et définir
comment le flux est contrôlé.
10
11
Patrons de création
Constitution d’un design pattern
Un design pattern est défini par :
 un contexte : une situation qui engendre le problème
 un problème : le problème récurrent qui apparaît dans
ce contexte
 une solution : une résolution validée du problème Un
design pattern extrait les aspects statiques et dynamiques
de la structure et de la coopération entre les participants
clés de la conception d’application
12
Patrons de création
 Un patron de création permet de résoudre les
problèmes liés à la création et la configuration
d'objets.
 Par exemple, une classe nommée Ressources,
Application gérant toutes les ressources de
l'application ne doit être instanciée qu'une seule
et unique fois. Il faut donc empêcher la création
intentionnelle ou accidentelle d'une autre instance
de la classe. Ce type de problème est résolu par
le patron de conception "Singleton".
13
14
Singleton (création)
 Intention
 S’assurer qu’une classe a une seule instance, et fournir
un point d’accès global à celle-ci.
 Motivation
 Un seul spooler d’imprimante / plusieurs imprimantes
 Plus puissant que la variable globale
 Champs d’application
 Lorsque l’instance unique doit être extensible par
héritage, et que les clients doivent pouvoir utiliser cette
instance étendue sans modifier leur code
15
Singleton (2)
 Structure
 Participants
 instance() : méthode de classe pour accéder à l’instance
16
Singleton (3)
 Collaborations
 Les clients ne peuvent accéder à l’instance qu’à travers
la méthode spécifique
 Conséquences
 Accès contrôlé
 Pas de variable globale
 Permet la spécialisation des opérations et de la
représentation
 Permet un nombre variable d’instances
 Plus flexible que les méthodes de classe
17
Singleton (4)
 Implémentation
 Assurer l’unicité
 Sous-classes (demander quel forme de singleton dans
la méthode instance() )
 Utilisations connues
 DefaultToolkit en AWT/Java et beaucoup de
bibliothèques abstraite de GUI
 Patrons associés
 Fabrique abstraite (Abstract Factory),Monteur(Builder),
Prototype
Implémentation en java
18
19
Fabrique (création) (1)
 Intention
 Définit une interface pour la création d’un objet, mais en
laissant à des sous-classes le choix des classes à
instancier
 Permet à une classe de déléguer l’instanciation à des
sous-classes
 Synonymes : Factory method / Virtual Constructor
 Motivation
 instancier des classes, en connaissant seulement les
classes abstraites
20
Fabrique (2)
 Champs d’application
 une classe ne peut anticiper la classe de l'objet qu'elle doit
construire
 une classe délègue la responsabilité de la création à ses sous-
classes, tout en concentrant l'interface dans une classe unique
21
Fabrique (3)
 Structure en UML
22
Fabrique (4)
 Implémentation
 2 variantes principales :
 La classe Creator est une classe abstraite et ne fournit pas
d’implémentation pour la fabrication qu’elle déclare ( les sous-classes
définissent obligatoirement une implémentation)
 La classe ConcreteCreator est une classe concrète qui fournit une
implémentation par défaut pour la fabrication
 Fabrication paramétrée :
 La fabrication utilise un paramètre qui identifie la variété d’objet à
créer
 Utilisations connues
 Applications graphiques, Des hiérarchies de classes parallèles
, toolkits ou les frameworks…
 Patrons associés
 Abstract Factory, Template Method, Prototype
Fabrique (5)
 Autres avantages et variantes :
 l'utilisation de méthodes de fabrication ne laisse aucune
ambiguïté : (noms descriptifs ).
 L’Encapsulation.
23
Fabrique : exemple (6)
24
Fabrique : implémentation java
25
Fabrique : implémentation java
P. Collet 26
Fabrique : implémentation java
P. Collet 27
Fabrique : implémentation java
28
29
Fabrique abstraite (création) (1)
 Intention
 Fournir une interface pour créer des familles d’objets
dépendants ou associés sans connaître leur classe réelle
 Synonymes : Kit, Fabrique abstraite, Usine abstraite
 Motivation
 Un éditeur qui va produire plusieurs représentations d’un
document
 Champs d’application
 Indépendance de comment les objets sont créés,
composés et représentés
 Configuration d’un système par une instance d’une
multitude de familles de produits
30
Fabrique abstraite (2)
 Conception d’une famille d’objets pour être utilisés
ensemble et contrôle de cette contrainte
 Bibliothèque fournie avec seulement leurs interfaces,
pas leurs implémentations
31
Fabrique abstraite (3)
 Structure en UML
32
Fabrique abstraite (4)
 Implémentation
 Les fabriques sont souvent des singletons
 Ce sont les sous-classes concrètes qui font la création,
en utilisant le plus souvent une Fabrique
 Si plusieurs familles sont possibles, la fabrique concrète
utilise Prototype
 Patrons associés
 Singleton, Factory Method, Prototype
Fabrique abstraite: exemple (5)
33
Fabrique abstraite : implémentation java
34
Fabrique abstraite : implémentation java
35
Fabrique abstraite : implémentation java
36
Prototype création (1)
 Intention
 Indiquer le type des objets à créer en utilisant une
instance (le prototype). les nouveaux objets sont des
copies de ce prototype (clonage)
 Motivation
 ce patron permet de créer un nouvel objet par recopie
d'un objet existant
 Champs d’application :
37
38
Prototype (2)
 Structure en UML
39
Prototype (3)
 Implémentation
 il faut déclarer une classe abstraite spécifiant une
méthode abstraite (virtuelle pure en C++)
appelée clone()
 Toute classe nécessitant un constructeur
polymorphique dérivera de cette classe abstraite et
implantera la méthode clone().
 Patrons associés
 Singleton, Factory Method
Prototype (4)
40
Implémentation en java
41
Implémentation en java
42
43
Monteur (création) (1)
 Intention
 séparer la construction d'un objet complexe de sa
représentation.
 le même processus de construction peut créer
différentes représentations.
 Synonymes : builder
 Motivation
 la création d'une variété d'objets complexes à partir d'un
objet source.
44
Monteur (création) (2)
Structure en Uml
45
Monteur (3)
 Implémentation
 Plutôt que de créer un objet de A à Z c'est à dire en appelant un
constructeur, puis en configurant la valeur de ses attributs
 Encapsulez la création et l'assemblage des pièces d'un objet
complexe dans un objet Builder distinct.
 Une classe délègue la création d'objet à un objet Builder au lieu de
créer les objets directement.
 Une classe (le même processus de construction) peut déléguer à
différents objets Builder pour créer différentes représentations
d'un objet complexe.
 Patrons associés
Fabrique, Fabrique Abstraite, Patron de méthode
Exemple
46
Implémentation en java
47
Implémentation en java
48
Implémentation en java
49
Implémentation en java
50
Conclusion
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.
51
52
Sources
 Design Patterns – Elements of Reusable
Object-Oriented Software, Addison Wesley, 1994
 http://www.dofactory.com

Más contenido relacionado

La actualidad más candente

Tpdba1
Tpdba1Tpdba1
Tpdba1infcom
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services webCHOUAIB EL HACHIMI
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceLilia Sfaxi
 
patron de conception
patron de conception patron de conception
patron de conception Shili Mohamed
 
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écisionMohamed Heny SELMI
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
Le passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnelLe passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnelHassen Sic
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correctionInes Ouaz
 
Gestion billetterie de cinéma
Gestion billetterie de cinémaGestion billetterie de cinéma
Gestion billetterie de cinémamohamedgoumih
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 

La actualidad más candente (20)

Tpdba1
Tpdba1Tpdba1
Tpdba1
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de Séquence
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
patron de conception
patron de conception patron de conception
patron de conception
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
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
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
Le passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnelLe passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnel
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Gestion billetterie de cinéma
Gestion billetterie de cinémaGestion billetterie de cinéma
Gestion billetterie de cinéma
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 

Similar a Patrons de creation

Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof frIt Academy
 
Module development Patterns de Création.pptx
Module development Patterns de Création.pptxModule development Patterns de Création.pptx
Module development Patterns de Création.pptxarapilatico
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en JavaOussama BEN KHIROUN
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdfandre543581
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 
Framework Orienté objet
Framework Orienté objetFramework Orienté objet
Framework Orienté objetNSim Technology
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliquesMariem ZAOUALI
 
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Amira Hakim
 
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...IHM'10
 
Design Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesDesign Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesAlex Wilfried OUATTARA
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMALoic Yon
 
Rédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesRédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesMSDEVMTL
 

Similar a Patrons de creation (20)

Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof fr
 
Module development Patterns de Création.pptx
Module development Patterns de Création.pptxModule development Patterns de Création.pptx
Module development Patterns de Création.pptx
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Patrons de conception
Patrons de conceptionPatrons de conception
Patrons de conception
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdf
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Abstract factory+adapter
Abstract factory+adapterAbstract factory+adapter
Abstract factory+adapter
 
Framework Orienté objet
Framework Orienté objetFramework Orienté objet
Framework Orienté objet
 
Cours spring
Cours springCours spring
Cours spring
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliques
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
 
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
Méthode d’implémentation efficace des modèles PAC et PAC-Amodeus à l’aide de ...
 
Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)
 
Design Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesDesign Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiques
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
Rédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakesRédaction de tests unitaires avec fakes
Rédaction de tests unitaires avec fakes
 
Objecteering
ObjecteeringObjecteering
Objecteering
 

Más de omri med

composing continuos services in CoAP-based IOT
composing continuos services in CoAP-based IOT composing continuos services in CoAP-based IOT
composing continuos services in CoAP-based IOT omri med
 
melange de gaussienne
melange de gaussiennemelange de gaussienne
melange de gaussienneomri med
 
elastic business process management: state of the art and open challenges for...
elastic business process management: state of the art and open challenges for...elastic business process management: state of the art and open challenges for...
elastic business process management: state of the art and open challenges for...omri med
 
Projet security et datawarehouse
Projet security et datawarehouseProjet security et datawarehouse
Projet security et datawarehouseomri med
 

Más de omri med (6)

I fog sim
I fog simI fog sim
I fog sim
 
composing continuos services in CoAP-based IOT
composing continuos services in CoAP-based IOT composing continuos services in CoAP-based IOT
composing continuos services in CoAP-based IOT
 
melange de gaussienne
melange de gaussiennemelange de gaussienne
melange de gaussienne
 
Sioc
SiocSioc
Sioc
 
elastic business process management: state of the art and open challenges for...
elastic business process management: state of the art and open challenges for...elastic business process management: state of the art and open challenges for...
elastic business process management: state of the art and open challenges for...
 
Projet security et datawarehouse
Projet security et datawarehouseProjet security et datawarehouse
Projet security et datawarehouse
 

Último

Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptbentaha1011
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 

Último (8)

Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 

Patrons de creation

  • 1. 1 Patrons de conception Réalisé par : Mohamed omri DMRIM-SIW
  • 2. 2 Plan  Introduction  Premier exemple  Principes et classification  Présentation des patrons de création les plus significatifs  Conclusion
  • 3. Problématique  Concevoir un logiciel en OO est difficile.  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 problème mais suffisamment générale pour résoudre des future problèmes. 3
  • 4. 4 Motivations  Les besoins pour une bonne conception et du bon code :  Extensibilité  Flexibilité  Maintenabilité  Réutilisabilité  Les qualités internes Meilleure spécification, construction, documentation
  • 5. 5 Motivations (suite)  Augmenter la cohésion du code  C’est d’augmenter le degré de corrélation des données entre elles.  Diminuer le couplage  Le couplage est le nombre de liens entre les données de classes ou fonctions différentes.  On minimise le couplage en maximisant la cohésion, et en créant des interfaces qui seront les points centraux d’accès aux autres données.
  • 6. 6 Design Pattern : principe  Description d’une solution à un problème général et récurrent de conception dans un contexte particulier  Description des objets communicants et des classes  Indépendant d’une application ou spécifique  Certains patterns sont relatifs à la concurrence, à la programmation distribuée, temps-réel  Traduction : patron de conception  Tous les patrons visent à renforcer la cohésion et à diminuer le couplage
  • 7. 7 Historique & définition Gang of Four : Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Un Design Pattern nomme, abstrait et identifie les aspects essentiels d’une structuration récurrente, ce qui permet de créer une modélisation orientée objet réutilisable
  • 8. 8 Design Patterns : bénéfices globaux  Standardisation de certains concepts en modélisation  Capture de l’expérience de conception  Réutilisation de solutions élégantes et efficaces vis-à-vis du problème  Amélioration de la documentation  Facilité de maintenance
  • 9. Types de patrons de conception :  Les patrons sont regroupés en 3 catégories qui sont :  Patrons de création  Concernent le processus de la création d'objets  Les patrons de création aident à créer des objets pour vous, au lieu d’avoir à instancier les objets directement.  Patrons de structure  Concernent la composition de classes et d'objets  Les patrons de structure aident à composer des groupes d’objets en des structures plus larges, telles que des interfaces utilisateur complexes. 9
  • 10. Types de patrons de conception :  Patrons de comportement  Concernent l'interaction des classes et des objets  Les patrons de comportement aident à définir la communication entre les objets du système et définir comment le flux est contrôlé. 10
  • 12. Constitution d’un design pattern Un design pattern est défini par :  un contexte : une situation qui engendre le problème  un problème : le problème récurrent qui apparaît dans ce contexte  une solution : une résolution validée du problème Un design pattern extrait les aspects statiques et dynamiques de la structure et de la coopération entre les participants clés de la conception d’application 12
  • 13. Patrons de création  Un patron de création permet de résoudre les problèmes liés à la création et la configuration d'objets.  Par exemple, une classe nommée Ressources, Application gérant toutes les ressources de l'application ne doit être instanciée qu'une seule et unique fois. Il faut donc empêcher la création intentionnelle ou accidentelle d'une autre instance de la classe. Ce type de problème est résolu par le patron de conception "Singleton". 13
  • 14. 14 Singleton (création)  Intention  S’assurer qu’une classe a une seule instance, et fournir un point d’accès global à celle-ci.  Motivation  Un seul spooler d’imprimante / plusieurs imprimantes  Plus puissant que la variable globale  Champs d’application  Lorsque l’instance unique doit être extensible par héritage, et que les clients doivent pouvoir utiliser cette instance étendue sans modifier leur code
  • 15. 15 Singleton (2)  Structure  Participants  instance() : méthode de classe pour accéder à l’instance
  • 16. 16 Singleton (3)  Collaborations  Les clients ne peuvent accéder à l’instance qu’à travers la méthode spécifique  Conséquences  Accès contrôlé  Pas de variable globale  Permet la spécialisation des opérations et de la représentation  Permet un nombre variable d’instances  Plus flexible que les méthodes de classe
  • 17. 17 Singleton (4)  Implémentation  Assurer l’unicité  Sous-classes (demander quel forme de singleton dans la méthode instance() )  Utilisations connues  DefaultToolkit en AWT/Java et beaucoup de bibliothèques abstraite de GUI  Patrons associés  Fabrique abstraite (Abstract Factory),Monteur(Builder), Prototype
  • 19. 19 Fabrique (création) (1)  Intention  Définit une interface pour la création d’un objet, mais en laissant à des sous-classes le choix des classes à instancier  Permet à une classe de déléguer l’instanciation à des sous-classes  Synonymes : Factory method / Virtual Constructor  Motivation  instancier des classes, en connaissant seulement les classes abstraites
  • 20. 20 Fabrique (2)  Champs d’application  une classe ne peut anticiper la classe de l'objet qu'elle doit construire  une classe délègue la responsabilité de la création à ses sous- classes, tout en concentrant l'interface dans une classe unique
  • 22. 22 Fabrique (4)  Implémentation  2 variantes principales :  La classe Creator est une classe abstraite et ne fournit pas d’implémentation pour la fabrication qu’elle déclare ( les sous-classes définissent obligatoirement une implémentation)  La classe ConcreteCreator est une classe concrète qui fournit une implémentation par défaut pour la fabrication  Fabrication paramétrée :  La fabrication utilise un paramètre qui identifie la variété d’objet à créer  Utilisations connues  Applications graphiques, Des hiérarchies de classes parallèles , toolkits ou les frameworks…  Patrons associés  Abstract Factory, Template Method, Prototype
  • 23. Fabrique (5)  Autres avantages et variantes :  l'utilisation de méthodes de fabrication ne laisse aucune ambiguïté : (noms descriptifs ).  L’Encapsulation. 23
  • 26. Fabrique : implémentation java P. Collet 26
  • 27. Fabrique : implémentation java P. Collet 27
  • 29. 29 Fabrique abstraite (création) (1)  Intention  Fournir une interface pour créer des familles d’objets dépendants ou associés sans connaître leur classe réelle  Synonymes : Kit, Fabrique abstraite, Usine abstraite  Motivation  Un éditeur qui va produire plusieurs représentations d’un document  Champs d’application  Indépendance de comment les objets sont créés, composés et représentés  Configuration d’un système par une instance d’une multitude de familles de produits
  • 30. 30 Fabrique abstraite (2)  Conception d’une famille d’objets pour être utilisés ensemble et contrôle de cette contrainte  Bibliothèque fournie avec seulement leurs interfaces, pas leurs implémentations
  • 31. 31 Fabrique abstraite (3)  Structure en UML
  • 32. 32 Fabrique abstraite (4)  Implémentation  Les fabriques sont souvent des singletons  Ce sont les sous-classes concrètes qui font la création, en utilisant le plus souvent une Fabrique  Si plusieurs familles sont possibles, la fabrique concrète utilise Prototype  Patrons associés  Singleton, Factory Method, Prototype
  • 34. Fabrique abstraite : implémentation java 34
  • 35. Fabrique abstraite : implémentation java 35
  • 36. Fabrique abstraite : implémentation java 36
  • 37. Prototype création (1)  Intention  Indiquer le type des objets à créer en utilisant une instance (le prototype). les nouveaux objets sont des copies de ce prototype (clonage)  Motivation  ce patron permet de créer un nouvel objet par recopie d'un objet existant  Champs d’application : 37
  • 39. 39 Prototype (3)  Implémentation  il faut déclarer une classe abstraite spécifiant une méthode abstraite (virtuelle pure en C++) appelée clone()  Toute classe nécessitant un constructeur polymorphique dérivera de cette classe abstraite et implantera la méthode clone().  Patrons associés  Singleton, Factory Method
  • 43. 43 Monteur (création) (1)  Intention  séparer la construction d'un objet complexe de sa représentation.  le même processus de construction peut créer différentes représentations.  Synonymes : builder  Motivation  la création d'une variété d'objets complexes à partir d'un objet source.
  • 45. 45 Monteur (3)  Implémentation  Plutôt que de créer un objet de A à Z c'est à dire en appelant un constructeur, puis en configurant la valeur de ses attributs  Encapsulez la création et l'assemblage des pièces d'un objet complexe dans un objet Builder distinct.  Une classe délègue la création d'objet à un objet Builder au lieu de créer les objets directement.  Une classe (le même processus de construction) peut déléguer à différents objets Builder pour créer différentes représentations d'un objet complexe.  Patrons associés Fabrique, Fabrique Abstraite, Patron de méthode
  • 51. Conclusion 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. 51
  • 52. 52 Sources  Design Patterns – Elements of Reusable Object-Oriented Software, Addison Wesley, 1994  http://www.dofactory.com