Design Pattern Hichame ELKHALFI.

Slides:



Advertisements
Présentations similaires
Spécialisation/généralisation Héritage Polymorphisme.
Advertisements

LOG4430 : Architecture logicielle et conception avancée
Approfondissement du langage
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
JAV - TD 6 Structures de données JAVA
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
INTRODUCTION.
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Introduction aux Session Beans
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
Pattern État PowerPoint 2003, télécharger la visionneuse PowerPoint Viewer dernière édition si vous ne lavez pas…télécharger la visionneuse PowerPoint.
Classes locales classes définies à l'intérieur d'un bloc de code,
Programmation orientée objet
Principes de la technologie orientée objets
Module 1 : Préparation de l'administration d'un serveur
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Réalisée par :Samira RAHALI
Langage Oriente Objet Cours 4.
Révision Les principes SOLID.
Le Travail Collaboratif ...
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Classes abstraites et Interfaces
Vers la conception objet
Factory Design Patterns Factory Method
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
.Net Remoting.
Langage Oriente Objet Cours 2.
Interfaces : comment classifier ?
Structures de données IFT-2000
Structures de données IFT-10541
Behavioral Design Patterns The Observer Pattern Roberto Demontis Sylvain Giroux.
Introduction au paradigme orienté-objet (suite)
Design Patterns Factory Method – Pattern de construction [DANT] Génie Logiciel 1.
Design Pattern: Decorator
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Abstract Factory Pattern Une AbstractFactory est une classe qui existe pour créer des instances de d'autres classes. Créé par le « Gang of Four » Est un.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-2000 Abder Alikacem L’héritage en C++ Département d’informatique et de génie logiciel Édition Septembre 2009.
Patrons de conceptions de créations
Héritage Licence Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier.
Travaux Pratiques Représentation des connaissances
Objectifs À la fin de ce cours, vous serez capables de :
JavaScript Nécessaire Web.
INTRODUCTION.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
Les principes de la modélisation de systèmes
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
Design Patterns en programmation par objets. Plan  Design patterns –De quoi s’agit-il? –Pourquoi faut-il les utiliser?  Design patterns essentiels 
11/04/ L'héritage Cours 7 Cours 7.
Algorithmique et programmation (1)‏
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Un peu de Design Pattern Quelques modèles pour développer vite et bien.
MOCK.
Iterator Design Pattern Alessandro Soro Sylvain Giroux.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Notifications et Communication réseau D. BELLEBIA – 18/12/2007NSY208 CNAM.
Factory Design Patterns Raffaella Sanna Sylvain Giroux.
Introduction à la Programmation Orientée Objet
INSTITUT SUPERIEURE D’INFORMATIQUE Design Pattern
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
Template Method Design Pattern. But Définir le squelette d’un algorithme tout en déléguant certaines étapes aux sous-classes. Les sous-classes peuvent.
Révision Les principes SOLID. Question  Qu’est-ce que le S de Solid?
Transcription de la présentation:

Design Pattern Hichame ELKHALFI

Design pattern de création Factory Method Abstract Factory Singleton Builder prototype

Design pattern de structure Composite Bridge Decorator Adapter Proxy

Design pattern de comportement Iterator Command Mediator State Observer Templatre

Design pattern de BluePrint Struts WebServices JSF

Déroulement Cours et TP sur machine Seance 5 – contrôle continue

Design pattern de création Factory Method Abstract Factory Singleton

Factory Method Création indirecte d'instance déléguée au niveau d'une sous classe. Elle gère les détails de la création des objets. Exemple pas bon : VoitureHybride. Dans l’exemple : Inconvénient: - si on rajoute une autre voiture il faut rajouter des if. - concentrer la complexité à un seul endroit

Factory Method Solution:FactoryMultiMarque Une interface abstraite (Usine) pour crée un produit (Voiture). La spécialisation se fera au niveau des classe factory concrete (FactoryMultiMarque) et des produits concret (407, Serie3).

Abstract Factory Instanciation indirecte de familles de produits. (ex: Look & Feel "Windows" ou "X11/Motif"). En changeant de fabrique on génère des objets différents(look1,look2, ....) qui ont néanmoins les mêmes fonctionnalités (même interfaces).

Abstract Factory Fournir une interface abstraite pour crée une famille de produit. FabriqueComposant : FabriqueComposantSolide Crée une roue : plate, plastique Crée une planche : en chêne , en plastique Crée une visse : en acier, en bois FabriqueComposantLeger

Singleton Garantie qu’il existe au plus une seule instance d’une classe. Exemple : Gestion de pool de connexion. Factory ^_^

Singleton Constructeur privé Méthode d’accès static. Code Monothread : SingeltonMonoThread Multithread : SingeltonMultiThread

Builder Encapsuler la construction d’un produit et permettre de le construire par étape. Il ne doit pas être confondu avec une Factory elle ne permet de définir comment un objet va être construit

Builder On peut exploiter les Builder en complément d'une Fabrique. Un Fabrique utilise alors le Builder pour "monter" l'objet retourné.

Prototype Créer de nouveaux objets en partant d’objets existants . En java, on utilise la méthode clone() La méthode clone : il faut une interface clonable et implémenter la méthode clone et faire super.clone() => montrer la Classe Moto

Design pattern de structure Bridge Composite Decorator Adapter Proxy

Bridge / Pont Découple une abstraction de son implémentation. Ainsi, chacun des éléments pourra se voir modifié indépendamment l'un de l'autre

Bridge/pont Exemple télécommande version 1

Composite Compose des structures arborescentes pour représenter des hiérarchies composant/composé. Il permet au client de traiter de la même façon les objets individuels et les combinaisons de ceux-ci.

Composite Exemple: Carte du restaurant Menu enfant Menu adulte Dessert

Decorator Il ajoute des responsabilités à une classe de manière : Dynamique : lors du Runtime Sans trop d’héritage

Decorator Exemple : Machine à café old génération. boisson café choco lait laitsucre Chococafe the

Decorator Exemple : Machine à café new génération. Sucre Chocolat café Prix() 0.23€ 0.05€ 0.10€ 0.38€

Composant référence decorator execution ExecutionDecorator 1 sayHello() decorator execution ExecutionDecorator 1 ExecutionDecorator2

Adapter Utilisé pour: Convertir l'interface d'une classe en une autre répondant aux besoins spécifiés par le client. Joue le rôle d’intermédiaire entre le client et le fournisseur

<<Intercafe>> Adapter Exemple: Adaptateur Souris : USB – PS/2 Prise électrique : Usa vs EU <<Intercafe>> Cible Requete() Client Adaptateur Requete() Adapté RequeteSpécifique()

Proxy C’est un remplaçant d’un objet réel. Il joue le rôle de représentant local d’un objet distant Interface implémente implémente SujetReel Proxy utilise

Proxy Exemple: RMI Proxy HTTP

Adapter vs Proxy ADAPTER vs PROXY. ADAPTER et PROXY ont une structure semblable. PROXY préserve l'interface, alors qu' ADAPTER transforme l'interface. En outre, PROXY implique souvent (pas toujours) un accès à distance, alors que ADAPTER est généralement local.

Design pattern de comportement Iterator Command Mediator State Observer Template

Iterator Pour parcourir un objet composé (ex : une collection) sans exposer la structure interne de celui-ci. L’iterator encapsule la manière dont une collection va être parcouru.

Iterator Ajouter une méthode ‘getIterator’ à la collection. L’iterator doit avoir des méthodes pour parcourir la collection: next() hasNext() last() …… Exemple : java.util.Iterator, java.util.ArrayList

Mediator Réveil Cafetière Calendrier Arrosage receptionEveneemnt(){ verifierCalendrier(); veriierReveil(); } receptionEveneemnt(){ verifierCalendrier(); veriierArrosage(); demarrerCafetiere(); } Réveil Calendrier Cafetière Arrosage receptionEveneemnt(){ verifierCalendrier(); verifierTemperature(); verifierPlui(); } On a une maison futuriste Exemple : Ici on voir que tous les objet sont couplés les un au autre, si par exemple on modifie le comportement du calendrier, il faut aussi modifier le comportement de tous les autre objet qui l’utilise receptionEveneemnt(){ verifierJour(); programmerArrosage(); programmerCafetiere(); programmerReveil() }

Mediator Centraliser le contrôle et les communications complexes entre objets Augmente la réutilisabilité des objets, en les découplant. Exemple : Quand

Mediator Cafetière Réveil Mediator Arrosage Calendrier Exemple : receptionEveneemnt(){ If(weekend){ verfierTemperature() } If (reveilEvenement){ verifierCalendrier(); veriierArrosage(); demarrerCafetiere(); //suite Mediator Arrosage Calendrier Exemple : Si on a une mise à jour, on va modifier le mediator

Command Encapsule une requête comme un objet. Un command regroupe : Les actions Le récepteur L’objet command est une « Boite  noire », le client ne sait pas ce qui se passe à l’intérieur. Le client sait que sa requête sera satisfaite par le billet d’une méthode : execute() Exemple : Quand

Command Un commande: Les actions: Le récepteur: Allumer, éteindre Lampe, climatiseur Exemple : Quand

Command on off 2 récepteurs. 4 commandes. Lampe Climatiseur on off Exemple : Quand

Command public interface Commande { public void executer(); } public class CommandeAllumerLampe implements Commande { Lampe lampe; public CommandeAllumerLampe(Lampe lampe) { this.lampe = lampe; } public void executer() { lampe.marche(); récepteur Exemple : Quand action

Command Télécommande : référence les différentes commandes Autre commande : CommandeEteindreLampe Télécommande : référence les différentes commandes Exemple : Quand

Etat Permet à un objet de modifier son comportement quand son état interne change. Tout se passera comme si l’objet changerait de classe En encapsulant chaque état dans une classe, nous isolons tous les changement qui seront nécessaires. Exemple : Quand

Etat Exemple : Montre électronique Exemple : Quand

Observer Définit une relation entre objet de type un à plusieurs, de façon que, quand un objet change d’état, tous ceux qui en dépendent en soient notifiés et soit mis à jours automatiquement. Principe : Diffusion + Souscription Exemple : Quand

Observer 2 familles d’objet: Liste de diffusion Les observateurs L’observable : celui qu’on observe Liste de diffusion Observateur : les email Observable : publication d’un nouveau message Exemple : Quand

Template Définit le squelette d’un algorithme et permet aux sous-classes de fournir l’implémentation d’une ou plusieurs étapes. Exemple : Quand

Template On peut trouver plusieurs type de gréve : ratp, sncf, etc… Par contre elle suivent toutes la même logique Exemple : Quand

Template Préparation d’un grève L’algorithme général negociation() If(!negociation){ ecrireRevendication(); publierRevendication(); arreterTravail(); } reprendreTravail(); Exemple : Quand

Template La classe Grève implementera la logique Les classes filles implémenterons les actions. Exemple : Quand