La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Design Patterns Arnaud Nauwynck 1 & Nédra Mellouli 2 1 Société Softeam Paris 2 IUT de Montreuil UNIV-Paris8.

Présentations similaires


Présentation au sujet: "Design Patterns Arnaud Nauwynck 1 & Nédra Mellouli 2 1 Société Softeam Paris 2 IUT de Montreuil UNIV-Paris8."— Transcription de la présentation:

1 Design Patterns Arnaud Nauwynck 1 & Nédra Mellouli 2 1 Société Softeam Paris 2 IUT de Montreuil UNIV-Paris8

2 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 3 Plan Orienté-Objet & Design Patterns Généralités sur les Design Patterns Étude de Cas Utilisation & méthode dapprentissage Conclusion

4 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 5 Objectifs / Positionnement Pré requis connaissance Orientée-Objet Langage OO : C++ / Java.. Concepts de Librairies Buts Concepts abstraits Vocabulaire des concepts (complémentaire dUML) Nouvelle vision du monde du logiciel Non – Buts Pas liés à un langage précis Pas un livre dapprentissage, pas de recettes !

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

7 7 Limitation dune approche naïve de lOrienté-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 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 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 10 Etude de cas : 5 Problèmes Concevoir larchitecture (classes en UML) dun 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 dobjets (Group / Ungroup) 4. Comportements de la souris, des menus contextuels 5. Conversions en multiples formats…

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

14 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 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 16 Pb 2/5: Publish & Subscribe (Bis) Indépendance des Vues pour lObjet Forme addVueListener(v) removeVueListener(v) FireAll(chgEvent) VueAbstraite SetSrcObject(o) > Notify(chgEvent) 0..* listVues 0..1 srcObject Vue1 Notify() {.. Draw1 } Vue2 Notify() {.. Draw2 }

17 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 18 Pb 3/5 : Composite.. Group / Ungroup Forme CerclesSegments FormeComposite 0..* Sous-formes

19 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 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 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

22 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 larchitecture Ecrire : savoir en mettre partout (!!), en respectant les concepts

23 23 Description des 23 Patterns ? / Réflexion de chacun !! Découverte Bon sens, mais cest 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 Cest très fort 2ème pratique On les vois partout ! On en met partout !

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

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

26 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

27 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

28 Cadre pédagogique à l'IUT de Montreuil : design patterns par la théorie et la pratique Nelly Ben simon Nédra Mellouli Serge Rosmoduc

29 29 Nos choix En algorithmique et programmation forte orientation OO java dès la première année enseignement GI à forte coloration java : jdbc/jsp/servlets

30 30 Patterns et java Intérêt architectural des patterns : mieux structurer le code intérêt pour la pédagogie OO : systèmes non triviaux de classes qui collaborent Nécessaires pour comprendre les bibliothèques java : les patterns y sont omniprésents swing (Observateur...), jdbc (Abstract Factory)...

31 31 L'enseignement des patterns problème : les patterns répondent à des questions que les étudiants ne se posent pas la présentation classique des patterns suppose une expérience de la programmation donner cette expérience par des projets ? long. présentation multiples des patterns En programmation réseau En imagerie numérique (essentiellement le visiteur) En OMGL dans le cadre d'un projet transversal en option GI, depuis cette année

32 32 Les patterns à Montreuil trois cours Une conférence suivie d'une séance de TP réalisées par un intervenant de la société Softeam un mini-projet mise en évidence systématique des patterns rencontrés en programmation projet transversal (OMGL/EOG/PROG)

33 33 Cours principes de conception OO ; introduction aux design patterns : observateur (MVC, architectures 2/3- 3/3) ; design patterns : commande, visiteur Mini-projet « Statistiques :Histogramme, Camenbert et texte ».

34 34 Mini-projet « Statistiques » une première partie donnée avant la présentation du MVC une seconde partie donnée après.

35 35 Première partie : solution proposée par un binôme

36 36 Deuxième partie : solution proposée par le même binôme

37 37 Les patterns dans les TPs de programmation proposer une architecture correcte des programmes développés en TP problème : cela prend du temps (2h de TP par semaine ?!?) solution utilisée : fournir une base déjà développée (voir transparent suivant) demander aux étudiants de la documenter (UML) rester simple

38 38 Exemple

39 39 Mandel (exercice sur les threads) on fournit un programme graphique fonctionnel sa structure est déjà bonne (pas de refactoring nécessaire) on demande de l'améliorer

40 40 TP JDBC : Annuaire architecture déjà fournie couches interface/logique métier/modèle/persistance exercice sur les différentes couches implémenter des parties de la couche persistance ajouter des fonctionnalités passer d'une interface texte à une interface graphique, puis jsp

41 41 « Cas transversal » Mener un grand projet : sur un cas réel Analyse des besoins du client Organisation de chaque groupe d'étudiant et planning Proposition d'un modèle en UML : utilisatios de certains patterns pour mieux découper : Strategie, proxy, fabrique abstraite, singleton… Validation avec l'accord du client Découpage en différentes tâches Développement de chaque tâche Integration : c'est une phase pénible pour les étudiants Ils s'apperçoivent de leurs erreux et de leurs mauvais choix! C'est une phase de reflexion et d'autocorrection !

42 42 Les projets tuteurés Les étudiants sont fortement incités par certains tuteurs à mettre les patterns en application programmes d'exemples fournis « dessin géométrique » et « éditeur de MCT/MOT » mise en oeuvre du pattern MVC ; architecture non triviale du modèle ; patterns commande, visiteur... (Voir exécutable)

43 43 Conclusion sur les projets Enseigment Cours : très peu Plus de tranversalité TPs : application des patterns progressivement Impossible de maîtriser tous les patterns demandé (observateur, commande, visiteur) Plus de consentration sur l'observateur Cas tranversal Occasion précieuse pour assimiler les design patterns Sacrifier du temps et de l'énergie : nombre d'intervenants, l'encadrement, temps d'encadrement


Télécharger ppt "Design Patterns Arnaud Nauwynck 1 & Nédra Mellouli 2 1 Société Softeam Paris 2 IUT de Montreuil UNIV-Paris8."

Présentations similaires


Annonces Google