Title: Problmes de conception
1Conception par patrons
Étude de cas Concevoir un éditeur de
document Référence Design Patterns, Elements
of Reusable Object-Oriented Software Gamma E.,
Helm R, Johnson R., Vlissides J. Ed.
Addison-Wesley, 1995
2Problèmes de conception
- Structure du document ()
- Choix de la représentation interne
- Conception de la présentation (formatting) ()
- Arrangement des textes et graphiques en lignes et
colonnes - Embellissement de l interface utilisateur
- Multiples standards Look-and-Feel ()
- Multiples systèmes de fenêtrage
- Opérations de l utilisateur ()
- Vérification de l orthographe et césure
() sera développer par la suite
3Structure du document
- Responsabilités
- maintenir la structure physique du document
- générer et présenter le document visuellement
- faire correspondre la position sur l écran avec
les éléments de la représentation interne
- Contraintes
- traiter les textes et les graphiques de la même
façon - ne pas distinguer les éléments simples et les
éléments composés - considérer la nature des éléments ( pour
l orthographe et la césure, p.e.)
4Composition récursivedes textes et graphiques
Composite (colonne)
g
G
...
Composite (ligne)
Composite (ligne)
. . .
...
g
G
espace
5GlyphHiérarchie partielle
6Interface basique du Glyph
7Composite Pattern
8Composite PatternStructure
9Conception de la présentation (formatting)
- Responsabilités
- découper le texte en lignes, les lignes en
colonnes - faire varier largeur des marges, indentation,
tabulation, - autres contraintes de formatage
- Contraintes
- algorithme indépendant de la structure du
document - changer d algorithme sans modifier le glyph
(rapport qualité/vitesse) - modifier le glyph sans refaire l algorithme
gt nécessite un algorithme
10Composition et Compositor
11Structure d objetsreflétant le découpage dirigé
par le compositor
composition
Glyphs générés par le compositor
compositor
colonne
...
ligne
ligne
...
g
G
espace
12Strategy Pattern
13Standard Look-and-Feel
- Contraintes
- utiliser plusieurs standards Look-and-Feel
- ajouter facilement de nouveaux standards
- changer de standard à l exécution (run-time)
14GUIFactoryHiérarchie de classes
15GUIFactoryClasses produit abstraites et
sous-classes concrètes
16Exemple créer une barre de défilement pour Motif
- À éviter
- ScrollBar sb new MotifScrollBar()
- Plus générique
- ScrollBar sb guiFactory-gtCreateScrollBar()
- Instancier guiFactory
- GUIFactory guiFactory new MotifFactory
17Abstract Factory Pattern
18Opérations de l utilisateur
- Contraintes
- ne pas associer une opération particulière à une
interface particulière - opération créer document, ouvrir, sauver,
tourner la page, - interface touche clavier, bouton, menu,
- ne pas créer trop de dépendances entre
l implémentation et les classes de l interface
utilisateur (pour compréhension, extension,
maintenance) - undo/redo pour la plupart des fonctionnalités
- effacer
- sauver, quitter
- pas de limite dans le nombre de niveaux
gt mécanisme simple et extensible qui satisfait
tous ces besoins
19CommandHiérarchie partielle
20CommandRelation MenuItem-Command
21Historique des commandes
REDO
actions passées
présent
UNDO
Execute()
présent
Unexecute()
présent
UNDO
futur
passé
présent
futur
passé
présent
22Command Pattern
- Invoker (MenuItem)
- demande à la commande de satisfaire la requête
- Receiver (Document, Application)
- sait comment faire les opérations associées à la
satisfaction de la requête. Toute classe peut
servir de Receveur
23Conclusion
- Ces patrons de conception peuvent être appliqués
à beaucoup d autres applications et domaines - Il existe d autres patrons (cf Design Patterns)
- Chacun peut créer ses propres patrons