Design Patterns Cours IUT 7 mars 2001 Arnaud
- Slides: 27
Design Patterns Cours IUT 7 mars 2001 Arnaud Nauwynck & Nédra Mellouli arnaud. nauwynck@socgen. com
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 2
Plan ® Orienté-Objet & Design Patterns ® Généralités sur les Design Patterns ® Étude de Cas ® Utilisation & méthode d’apprentissage Conclusion 3
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. . . 4
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 ! 5
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 6
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 ® 7
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 8
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 9
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. 2. 3. 4. 5. Structure interne / Dessins des formes Changements synchronisés Groupes d’objets (Group / Ungroup) Comportements de la souris, des menus contextuels Conversions en multiples formats… 10
Pb 1/5 : MVC Modèle - Vue - Contrôleur ® Fichiers / Représentations Internes / Vues / Interactions utilisateurs Séparation Modèle-Contrôleur Vue Dessin Forme Cercle Séparation Vue-Contrôleur Vectoriel Pixel Segment Séparation Modèle-Vue!!! 11
Pb 1/5 : MVC (Suite) : Contrôleur Traitements / GUI Dessin Notification, affichage Vues Forme Cercle Vectoriel Segment Pixel Séparation Modèle-Vue!!! 12
Pb 1/5 : MVC (Suite) Architecture 2 tiers Contrôleur Traitements Requêtes Contrôleur GUI actions évènements GUI Dessin Notification, affichage Vues Forme Cercle Vectoriel Segment Serveur Applicatif (serveur d’objets) Séparation Modèle-Vue!!! Pixel Client Graphique (client léger) 13
Pb 1/5 : MVC (Suite) Architecture 3 tiers Contrôleur DB Requêtes Contrôleur Persistence Traitements Requêtes Contrôleur GUI Sql, Xql. . Dessin Notification, affichage Vues Forme Cercle Serveur de Base de Données Segment Serveur Applicatif Vectoriel Pixel Client Graphique (client léger) 14
Pb 2/5 : Publish & Subscribe ® Notifications de changement Sujet 0. . * list. Vues Subscribe / add. Vue. Listener(v) 0. . 1 src. Object Resign / remove. Vue. Listener(v) Fire. All(chg. Event) { for_list(vue, v) v->Notify(chg. Event) } Vue Set. Src. Object(o) Notify(chg. Event) 15
Pb 2/5: Publish & Subscribe (Bis) ® Indépendance des Vues pour l’Objet Forme 0. . * list. Vues add. Vue. Listener(v) 0. . 1 src. Object remove. Vue. Listener(v) Fire. All(chg. Event) Vue. Abstraite Set. Src. Object(o) <<Abstract >> Notify(chg. Event) Vue 1 Vue 2 Notify() {. . Draw 1 } Notify() {. . Draw 2 } 16
Pb 2/5: Publish & Subscribe (Ter) Indépendance des Objets pour les Vues (cf. MVC) 0. . * list. Vues Sujet. Abstrait add. Vue. Listener(v) remove. Vue. Listener(v) Fire. All(chg. Event) <<abstract>> get. XX() <<abstract>> get. Renderer() 0. . 1 src. Object Sujet 1 Sujet 2 get. XX get. Renderer Vue. Abstraite Set. Src. Object(o) Notify(chg. Event) Vue 1 Vue 2 17
Pb 3/5 : Composite. . ® Group / Ungroup Forme Cercles 0. . * Sous-formes Segments Forme. Composite 18
Pb 3/5 : Composite, Proxy. . ® Formes par procuration (Rotation, Iconifiée, En cours de chargement, etc. . ) Forme Cercles 0. . 1 forme sous-jacente 0. . * Sous-formes Segments Composite Proxy 19
Pb 4/5 : Délégation, Chaîne de Responsabilité. . ® Gestion de la souris, des évènements graphiques… Gestion. Application Vue Gestion. Formes Cercles Segments Gestion. Segment Menu Contextuel 20
Pb 5/5 : Stratégie, Visiteur, Factory, Singleton… ® Conversions Multiples, etc. . Traitement. Type. Factory get. Type. Traitement(name) . . Factory. get. Singleton() create. Instance Type. Traitement Type. Convertisseur. Ps Type. Convertisseur. Bmp Formes Cercles Segments Traitement Convertisseur. Ps Convertisseur. Bmp 21
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 Þ
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 ! 23
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 Un livre à lire 2 fois 1 rôle => 1 interface + délégation à 1 objet Possibilité de changement ouverte La programmation devient tellement plus simple !
- Chamilo iut 1
- Ftp iut dijon
- Univ valenciennes ent
- Iut geii toulon
- Geii montpellier
- Creer emploi du temps
- Mars design reference mission
- Arnaud ancion cardiologue
- Arnaud alcabez
- Arnaud ventura
- Arnaud pasquiers
- Arnaud marsollier
- Keith arnaud
- Arnaud venet
- Arnaud czaja
- Kishore mosaliganti
- Arnaud courgey
- Arnaud giovaninetti causa de la muerte
- Docteur arnaud richard
- Arnaud poujardieu
- Arnaud
- Poplar new city college
- Image search
- Arnaud alcabez
- Concaténe
- Arnaud czaja
- Arnaud alcabez
- Arnaud czaja