design patterns n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Design Patterns PowerPoint Presentation
Download Presentation
Design Patterns

Loading in 2 Seconds...

play fullscreen
1 / 27

Design Patterns - PowerPoint PPT Presentation


  • 77 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Design Patterns' - blanca


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
design patterns

Design Patterns

Cours IUT 7 mars 2001

Arnaud Nauwynck & Nédra Mellouli

arnaud.nauwynck@socgen.com

introduction
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
slide3
Plan
  • Orienté-Objet & Design Patterns
  • Généralités sur les Design Patterns
  • Étude de Cas
  • Utilisation & méthode d’apprentissage

Conclusion

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

objectifs positionnement
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 !
l h ritage en orient objets
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
limitation d une approche na ve de l orient objets
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
buts r les des objets
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

23 patterns 3 classifications
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
etude de cas 5 probl mes
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 :

  • Structure interne / Dessins des formes
  • Changements synchronisés
  • Groupes d’objets (Group / Ungroup)
  • Comportements de la souris, des menus contextuels
  • Conversions en multiples formats…
pb 1 5 mvc

Séparation

Vue-Contrôleur

Séparation

Modèle-Contrôleur

Contrôleur

Vue

Dessin

Forme

Vectoriel

Pixel

Cercle

Segment

Séparation

Modèle-Vue!!!

Pb 1/5 : MVC

Vue -

Contrôleur

Modèle -

  • Fichiers / Représentations Internes / Vues / Interactions utilisateurs
pb1 5 mvc suite contr leur traitements gui

Dessin

Vues

Forme

Vectoriel

Pixel

Cercle

Segment

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

Contrôleur

Traitements / GUI

Notification, affichage

Séparation

Modèle-Vue!!!

pb1 5 mvc suite architecture 2 tiers

Dessin

Vues

Forme

Vectoriel

Pixel

Cercle

Segment

Pb1/5 : MVC (Suite) Architecture 2 tiers

Contrôleur

Traitements

Contrôleur

GUI

Requêtes

actions

évènements GUI

Notification, affichage

Séparation

Modèle-Vue!!!

Serveur Applicatif

(serveur d’objets)

Client Graphique

(client léger)

pb1 5 mvc suite architecture 3 tiers

Dessin

Vues

Forme

Vectoriel

Pixel

Cercle

Segment

Pb1/5 : MVC (Suite) Architecture 3 tiers

Contrôleur

DB

Contrôleur

Traitements

Contrôleur

GUI

Requêtes

Requêtes

Persistence

Sql, Xql..

Notification, affichage

Serveur de Base de Données

Serveur Applicatif

Client Graphique

(client léger)

pb2 5 publish subscribe
Pb2/5 : Publish & Subscribe
  • Notifications de changement

0..* listVues

Vue

SetSrcObject(o)

Notify(chgEvent)

Sujet

Subscribe / addVueListener(v)

Resign / removeVueListener(v)

FireAll(chgEvent) {

for_list(vue,v)

v->Notify(chgEvent)

}

0..1 srcObject

pb 2 5 publish subscribe bis
Pb 2/5: Publish & Subscribe (Bis)
  • Indépendance des Vues pour l’Objet

0..* listVues

VueAbstraite

SetSrcObject(o)

<<Abstract >>Notify(chgEvent)

Forme

addVueListener(v)

removeVueListener(v)

FireAll(chgEvent)

0..1 srcObject

Vue1

Notify() {

.. Draw1

}

Vue2

Notify() {

.. Draw2

}

pb2 5 publish subscribe ter
Pb2/5: Publish & Subscribe (Ter)

Indépendance des Objets pour les Vues

(cf. MVC)

0..* listVues

SujetAbstrait

addVueListener(v)

removeVueListener(v)

FireAll(chgEvent)

<<abstract>>getXX()

<<abstract>> getRenderer()

VueAbstraite

SetSrcObject(o)

Notify(chgEvent)

0..1 srcObject

Vue1

Vue2

Sujet1

getXX

getRenderer

Sujet2

getXX

getRenderer

pb 3 5 composite

0..*

Forme

Sous-formes

FormeComposite

Cercles

Segments

Pb 3/5 : Composite..
  • Group / Ungroup
pb3 5 composite proxy

0..1 forme sous-jacente

Forme

0..* Sous-formes

Proxy

Cercles

Segments

Composite

Pb3/5 : Composite, Proxy..
  • Formes par procuration

(Rotation, Iconifiée, En cours de chargement, etc..)

pb4 5 d l gation cha ne de responsabilit
Pb4/5 : Délégation, Chaîne de Responsabilité..
  • Gestion de la souris, des évènements graphiques…

GestionApplication

Application

Vue

GestionVue

GestionForme

Formes

GestionSegment

Cercles

Segments

Menu Contextuel

pb 5 5 strat gie visiteur factory singleton

TraitementTypeFactory

getTypeTraitement(name)

TypeTraitement

..Factory.getSingleton()

TypeConvertisseurPs

createInstance

TypeConvertisseurBmp

Traitement

Formes

ConvertisseurPs

ConvertisseurBmp

Cercles

Segments

Pb 5/5 : Stratégie, Visiteur, Factory, Singleton…
  • Conversions Multiples, etc..
retour sur les 23 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

description des 23 patterns r flexion de chacun
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

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

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

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

  • Observateur
  • État
  • Stratégie
  • Patron de méthode
  • Visiteur

Chaîne de responsabilité

Commande

Interpréteur

Itérateur

Médiateur

Mémento

conclusion

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 !