Design Patterns Cours IUT 7 mars 2001 Arnaud Nauwynck & Nédra Mellouli

Slides:



Advertisements
Présentations similaires
Intégration de logiciels Open-Source dans un ordinateur simplifié basé sur Linux Stage du 6 avril au 30 juin 2006.
Advertisements

Applications N-Tiers Rappels: architecture et méthodologie
Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012
Réalisation d’un Framework pour la création de jeux d'arcades
SOA et Services Web Dr. Rim Samia Kaabi 26 mars 2017.
Introduction au patrons de conception « Design patterns »
Patterns & Anti Patterns
LOG4430 : Architecture logicielle et conception avancée
Conception de Programmes Evolutifs Pré Soutenance de TER Année Encadrants : Cathy Escazut et Michel Gautero Auteurs: Paul-Kenji Cahier Sylvain.
POO.
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
Design Pattern MVC En PHP5.
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
FSAB1402: Informatique 2 Techniques de Programmation Orientée Objet
Etude des Technologies du Web services
Programmation orientée objet
JAVASERVER FACES Un framework Java pour le développement Web.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Analyse et Conception orientée objet
Réalisée par :Samira RAHALI
GWT UML Un modeleur UML en GWT
Révision Les principes SOLID.
Vers la conception objet
Modèle, Méthode et Conception
Patterns et maintenabilité dans lindustrie : un cas concret Christophe Saint-Marcel Silicomp Ingénierie.
Journées Pattern Grenoble - 1 Une expérience à l'IUT de Bayonne : Les patrons Composite et Interprète Philippe Lopistéguy I.U.T. de Bayonne-Pays.
Développement d’un réseau social professionnel
Département de génie logiciel et des TI Université du Québec École de technologie supérieure Systèmes dinformation dans les entreprises Systèmes dinformation.
Behavioral Design Patterns The Observer Pattern Roberto Demontis Sylvain Giroux.
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Design Patterns Factory Method – Pattern de construction [DANT] Génie Logiciel 1.
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é.
Portée, arrimages et intervenants Évolution des méthodes
2IUT de Montreuil UNIV-Paris8
Sensibilisation a la modelisation
Patrons de conceptions de créations
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Design Patterns en programmation par objets. Plan  Design patterns –De quoi s’agit-il? –Pourquoi faut-il les utiliser?  Design patterns essentiels 
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
Conception 2 users.info.unicaen.fr/~ionona/gl2009
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Introduction au Génie Logiciel
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
IFT 785 Approches Orientée Objets Plan de cours. Information générale Professeur : – Sylvain Giroux –
Power AMC-Rational Rational Rose, Étude comparative
Behavioral Design Patterns The Observer Pattern. Intention Définir une dépendance de “1” à “n” entre des objets de telle sorte que lorsque l’état d’un.
La programmation par objets Principes et concepts Etude de Smalltalk.
Unified Modeling Language
Notifications et Communication réseau D. BELLEBIA – 18/12/2007NSY208 CNAM.
ISNET-43 Atelier de génie logiciel Approche fonctionnelle ou objets Concurrence ou complémentarité ? Synthèse.
Interface de génération de blason Projet STLM.GIBERT / M.LIPPMANN.
Projet de génie logiciel
2 Tracks Unified Process
Analyse Orientée Objet Cahier de Laboratoire. Sujet : Il s'agit de concevoir un outil de gestion pour une PME qui commercialise des stations météorologiques.
IHM Modèle d’architecture et liens avec les outils de production d’interface IHM Dirrigé par : Catherine RECANATI Présenté par : Youssef OUDGHIRI YOUSFI.
Nouvelles Technologies Internet & Mobile
UML support à la COO 2ème année IUT Calais-Boulogne Bénédicte Talon
31/05/2007Projet Master 11 Présentation ludique de la recherche opérationnelle à la fête de la science Année universitaire 2006/2007 Sylvain FIX Julien.
INSTITUT SUPERIEURE D’INFORMATIQUE Design Pattern
Réalisation d’un Framework pour la création de jeux d'arcades Groupe MUS-D : FHAL Jonathan KÖNIG Mélanie MAILLET Laurent MANESCHI Romain NOVAK Audrey Encadrant.
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
UML : méthode Processus. Introduction(1) ● Cycles ● Spécification par cas d'utilisation ● Identifier les besoins ● Analyse par cas d'utilisation ● Affiner.
PROJET DE SESSION DANS LE CADRE DU COURS: SCG Réalisation d’applications en SIG PRÉSENTÉ PAR: Marie-Andrée Levesque 18 AVRIL 2006.
ARIANE : Interopérabilité sémantique et accès aux sources d'information sur Internet Sylvain Aymard, Michel Joubert, Dominique Fieschi, Marius Fieschi.
Révision Les principes SOLID. Question  Qu’est-ce que le S de Solid?
Transcription de la présentation:

Design Patterns Cours IUT 7 mars 2001 Arnaud Nauwynck & Nédra Mellouli

2 Introduction  Thèse de Erich Gamma  Edité en un livre  Auteurs: E. Gamma, R. Helm, R. Johnson, J. Vlissides  Livre devenu best-seller informatique  Vision nouvelle(?) et incontournable

3 Plan  Orienté-Objet & Design Patterns  Généralités sur les Design Patterns  Étude de Cas  Utilisation & méthode d’apprentissage Conclusion

4 Mots - clefs  Titre : Design Patterns  Catalogue de Modèles de conception réutilisables  Elements of Reusable Object-Oriented Software  Mots-clefs = architecture, organisation, rôles, simple, intelligible, éprouvé, flexible, concepts OO, modulaire, (ré)utilisable...

5 Objectifs / Positionnement  Pré requis  connaissance Orientée-Objet  Langage OO : C++ / Java..  Concepts de Librairies  Buts  Concepts abstraits  Vocabulaire des concepts (complémentaire d’UML)  Nouvelle vision du monde du logiciel  Non – Buts  Pas liés à un langage précis  Pas un livre d’apprentissage, pas de recettes !

6 L’Héritage en Orienté-Objets  3 Façons de réutiliser les Objets  Héritages (d’interface / de code)  Composition  Templates (généricité de types..)  Héritage de code : souvent utilisé à tords  L’héritage d’interface : Light Motifs des Design Patterns

7 Limitation d’une approche naïve de l’Orienté-Objets  Recensement « Merisien » des objets  Données, pas Interfaces !  Objets fonctionnels seulement, Pas informatiques!  Héritage de code  forte corrélation classes / sous-classes..  Traitements mélangés entre classes  Grande difficulté de compréhension  insuffisance des diagrammes de classes de UML

8 Buts : Rôles des objets  Limitation des dépendances / connaissances entre objets  Introduction de dépendances dynamiques tardives (« late binding »)  Par opposition : suppression des dépendances à la compilation..  Rôles des objets systématiquement épurés, et définis par des interfaces 1 rôle => 1 interface + délégation à 1 objet Possibilité de changement ouverte

9 23 Patterns / 3 classifications Des objets où, comment, pourquoi faire ?..  Identification et rôles des objets et des relations 1) Modèles Créateurs Créer un objet / Accéder à un objet 2) Modèles Structuraux Combiner les objets en structures 3) Modèles de Comportement Utiliser les objets pour implanter des fonctionnalités

10 Etude de cas : 5 Problèmes Concevoir l’architecture (classes en UML) d’un logiciel de dessin géométrique supportant les cercles, segments, groupes… Parties à clarifier : 1. Structure interne / Dessins des formes 2. Changements synchronisés 3. Groupes d’objets (Group / Ungroup) 4. Comportements de la souris, des menus contextuels 5. Conversions en multiples formats…

11 Pb 1/5 : MVC  Fichiers / Représentations Internes / Vues / Interactions utilisateurs VectorielPixel ContrôleurVue Séparation Modèle-Vue!!! Forme CercleSegment Dessin Séparation Vue-Contrôleur Séparation Modèle-Contrôleur Modèle - Vue -Contrôleur

12 Pb1/5 : MVC (Suite) : Contrôleur Traitements / GUI Vues VectorielPixel Séparation Modèle-Vue!!! Notification, affichage Forme CercleSegment Dessin Contrôleur Traitements / GUI

13 Pb1/5 : MVC (Suite) Architecture 2 tiers Vues VectorielPixel Contrôleur GUI Séparation Modèle-Vue!!! Contrôleur Traitements Serveur Applicatif (serveur d’objets) Client Graphique (client léger) Notification, affichage Requêtes Forme CercleSegment Dessin évènements GUIactions

14 Pb1/5 : MVC (Suite) Architecture 3 tiers Vues VectorielPixel Contrôleur GUI Contrôleur Traitements Serveur Applicatif Client Graphique (client léger) Notification, affichage Requêtes Forme CercleSegment Dessin Requêtes Persistence Serveur de Base de Données Sql, Xql.. Contrôleur DB

15 Pb2/5 : Publish & Subscribe  Notifications de changement Sujet Subscribe / addVueListener(v) Resign / removeVueListener(v) FireAll(chgEvent) { for_list(vue,v) v->Notify(chgEvent) } Vue SetSrcObject(o) Notify(chgEvent) 0..* listVues 0..1 srcObject

16 Pb 2/5: Publish & Subscribe (Bis)  Indépendance des Vues pour l’Objet Forme addVueListener(v) removeVueListener(v) FireAll(chgEvent) VueAbstraite SetSrcObject(o) > Notify(chgEvent) 0..* listVues 0..1 srcObject Vue1 Notify() {.. Draw1 } Vue2 Notify() {.. Draw2 }

17 Pb2/5: Publish & Subscribe (Ter) Indépendance des Objets pour les Vues (cf. MVC) SujetAbstrait addVueListener(v) removeVueListener(v) FireAll(chgEvent) > getXX() > getRenderer() VueAbstraite SetSrcObject(o) Notify(chgEvent) 0..* listVues 0..1 srcObject Vue1Vue2 Sujet1 getXX getRenderer Sujet2 getXX getRenderer

18 Pb 3/5 : Composite..  Group / Ungroup Forme CerclesSegments FormeComposite 0..* Sous-formes

19 Pb3/5 : Composite, Proxy..  Formes par procuration (Rotation, Iconifiée, En cours de chargement, etc..) Forme CerclesSegments Composite 0..* Sous-formes Proxy 0..1 forme sous-jacente

20 Pb4/5 : Délégation, Chaîne de Responsabilité..  Gestion de la souris, des évènements graphiques… Formes CerclesSegments Vue Application GestionSegment Menu Contextuel GestionForme GestionVue GestionApplication

21 Pb 5/5 : Stratégie, Visiteur, Factory, Singleton…  Conversions Multiples, etc.. Formes CerclesSegments ConvertisseurPs Traitement ConvertisseurBmp TypeTraitement createInstance TraitementTypeFactory getTypeTraitement(name)..Factory.getSingleton() TypeConvertisseurPs TypeConvertisseurBmp

Retour sur les 23 Patterns Les 23 Patterns se trouvent partout Sous formes réduites, déguisées, renommées…  Lire des programmes … Savoir les reconnaître et comprendre l’architecture  Ecrire : savoir en mettre partout (!!), en respectant les concepts

23 Description des 23 Patterns ? / Réflexion de chacun !!  Découverte  Bon sens, mais c’est bien sûr..  1ère Lecture  Catalogue Universitaire ?  1ère pratique  Je connais!.. Je vais réessayer pareil…  Oups.. Je dois relire quelques détails..  2ème lecture  C’est très fort  2ème pratique  On les vois partout ! On en met partout !

Liste des Patterns : Modèles créateurs (1/3)  Fabrique Abstraite (Abstract Factory, Kit)  Monteur (Builder)  Fabrication (Factory method)  Prototype  Singleton

Liste des Patterns : Modèles Structuraux (2/3)  Adaptateur  Pont  Composite  Décorateur  Façade  Poids Mouche  Procuration (Proxy)

Liste des Patterns : Modèles Comportementaux (3/3)  Chaîne de responsabilité  Commande  Interpréteur  Itérateur  Médiateur  Mémento  Observateur  État  Stratégie  Patron de méthode  Visiteur

Conclusion 1 rôle => 1 interface + délégation à 1 objet Possibilité de changement ouverte La programmation devient tellement plus simple ! Un livre à lire 2 fois