+ All Categories
Home > Documents > Design Patterns

Design Patterns

Date post: 14-Jan-2016
Category:
Upload: blanca
View: 27 times
Download: 0 times
Share this document with a friend
Description:
Design Patterns. Cours IUT 7 mars 2001 Arnaud Nauwynck & Nédra Mellouli [email protected]. 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. Plan. - PowerPoint PPT Presentation
Popular Tags:
27
Design Patterns Cours IUT 7 mars 2001 Arnaud Nauwynck & Nédra Mellouli [email protected]
Transcript
Page 1: Design Patterns

Design Patterns

Cours IUT 7 mars 2001

Arnaud Nauwynck & Nédra Mellouli

[email protected]

Page 2: Design Patterns

2

IntroductionThèse de Erich GammaEdité en un livreAuteurs: E. Gamma, R. Helm, R.

Johnson, J. VlissidesLivre devenu best-seller informatiqueVision nouvelle(?) et incontournable

Page 3: Design Patterns

3

Plan

Orienté-Objet & Design PatternsGénéralités sur les Design PatternsÉtude de CasUtilisation & méthode d’apprentissage

Conclusion

Page 4: Design Patterns

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

Page 5: Design Patterns

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 !

Page 6: Design Patterns

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é à tordsL’héritage d’interface : Light Motifs des

Design Patterns

Page 7: 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

Page 8: Design Patterns

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 interfaces1 rôle => 1 interface + délégation à 1 objetPossibilité de changement ouverte

Page 9: Design Patterns

9

23 Patterns / 3 classifications

Des objets où, comment, pourquoi faire ?.. Identification et rôles des objets et des relations

1) Modèles CréateursCréer un objet / Accéder à un objet

2) Modèles StructurauxCombiner les objets en structures

3) Modèles de ComportementUtiliser les objets pour implanter des fonctionnalités

Page 10: Design Patterns

10

Etude de cas : 5 ProblèmesConcevoir 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és3. Groupes d’objets (Group / Ungroup)4. Comportements de la souris, des menus contextuels5. Conversions en multiples formats…

Page 11: Design Patterns

11

Pb 1/5 : MVC

Fichiers / Représentations Internes / Vues / Interactions utilisateurs

Vectoriel Pixel

Contrôleur

Vue

SéparationModèle-Vue!!!

Forme

Cercle Segment

Dessin

SéparationVue-Contrôleur

SéparationModèle-Contrôleur

Modèle - Vue - Contrôleur

Page 12: Design Patterns

12

Pb1/5 : MVC (Suite) : Contrôleur Traitements / GUI

Vues

Vectoriel Pixel

SéparationModèle-Vue!!!

Notification, affichage

Forme

Cercle Segment

Dessin

ContrôleurTraitements / GUI

Page 13: Design Patterns

13

Pb1/5 : MVC (Suite) Architecture 2 tiers

Vues

Vectoriel Pixel

ContrôleurGUI

SéparationModèle-Vue!!!

ContrôleurTraitements

Serveur Applicatif(serveur d’objets)

Client Graphique (client léger)

Notification, affichage

Requêtes

Forme

Cercle Segment

Dessin

évènements GUIactions

Page 14: Design Patterns

14

Pb1/5 : MVC (Suite) Architecture 3 tiers

Vues

Vectoriel Pixel

ContrôleurGUI

ContrôleurTraitements

Serveur Applicatif Client Graphique (client léger)

Notification, affichage

Requêtes

Forme

Cercle Segment

Dessin

RequêtesPersistence

Serveur de Base de Données

Sql, Xql..

ContrôleurDB

Page 15: Design Patterns

15

Pb2/5 : Publish & Subscribe

Notifications de changement

SujetSubscribe / addVueListener(v)Resign / removeVueListener(v)FireAll(chgEvent) { for_list(vue,v) v->Notify(chgEvent) }

VueSetSrcObject(o)Notify(chgEvent)

0..* listVues

0..1 srcObject

Page 16: Design Patterns

16

Pb 2/5: Publish & Subscribe (Bis)

Indépendance des Vues pour l’Objet

FormeaddVueListener(v)removeVueListener(v)FireAll(chgEvent)

VueAbstraiteSetSrcObject(o)<<Abstract >> Notify(chgEvent)

0..* listVues

0..1 srcObject

Vue1Notify() {.. Draw1}

Vue2Notify() {.. Draw2}

Page 17: Design Patterns

17

Pb2/5: Publish & Subscribe (Ter)Indépendance des Objets pour les Vues

(cf. MVC)

SujetAbstraitaddVueListener(v)removeVueListener(v)FireAll(chgEvent)<<abstract>> getXX()<<abstract>> getRenderer()

VueAbstraiteSetSrcObject(o)Notify(chgEvent)

0..* listVues

0..1 srcObject

Vue1 Vue2Sujet1getXXgetRenderer

Sujet2getXXgetRenderer

Page 18: Design Patterns

18

Pb 3/5 : Composite..Group / Ungroup

Forme

Cercles Segments FormeComposite

0..*Sous-formes

Page 19: Design Patterns

19

Pb3/5 : Composite, Proxy.. Formes par procuration (Rotation, Iconifiée, En cours de chargement, etc..)

Forme

Cercles Segments Composite

0..* Sous-formes

Proxy

0..1 forme sous-jacente

Page 20: Design Patterns

20

Pb4/5 : Délégation, Chaîne de Responsabilité..

Gestion de la souris, des évènements graphiques…

Formes

Cercles Segments

Vue

Application

GestionSegment

Menu Contextuel

GestionForme

GestionVue

GestionApplication

Page 21: Design Patterns

21

Pb 5/5 : Stratégie, Visiteur, Factory, Singleton…

Conversions Multiples, etc..

Formes

Cercles Segments ConvertisseurPs

Traitement

ConvertisseurBmp

TypeTraitement

createInstance

TraitementTypeFactory getTypeTraitement(name)

..Factory.getSingleton()

TypeConvertisseurPs

TypeConvertisseurBmp

Page 22: Design Patterns

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

Page 23: Design Patterns

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 !

Page 24: Design Patterns

Liste des Patterns : Modèles créateurs (1/3)

Fabrique Abstraite (Abstract Factory, Kit)Monteur (Builder)Fabrication (Factory method)PrototypeSingleton

Page 25: Design Patterns

Liste des Patterns : Modèles Structuraux (2/3)

AdaptateurPontCompositeDécorateurFaçadePoids MoucheProcuration (Proxy)

Page 26: Design Patterns

Liste des Patterns : Modèles Comportementaux (3/3)

Chaîne de responsabilitéCommandeInterpréteurItérateurMédiateurMémento

ObservateurÉtatStratégiePatron de méthodeVisiteur

Page 27: Design Patterns

Conclusion

1 rôle => 1 interface + délégation à 1 objetPossibilité de changement ouverte

La programmation devient tellement plus simple !

Un livre à lire 2 fois


Recommended