(OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML –...
Transcript of (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML –...
![Page 1: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/1.jpg)
Material available at https://combemale.github.ioVersion Nov., 2017
(OBJECT-ORIENTED) DESIGN PATTERNS
BENOIT COMBEMALEPROFESSOR, UNIV. TOULOUSE, FRANCE
HTTP://COMBEMALE.FR [email protected]@BCOMBEMALE
![Page 2: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/2.jpg)
Idéalement:« modular blackboxes »
RéutilisabilitéFaiblecouplage
Openforextension
Encapsulation
![Page 3: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/3.jpg)
"Each pattern describes aproblem whichoccurs overandoveragain inourenvironment,andthen describes thecoreofthesolution tothat problem,insuch away that you can usethis solutionamilliontimesover,without ever doing it thesameway twice”– ChristopherAlexander
![Page 4: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/4.jpg)
Clues from other disciplines (from E. Gamma)
4
cf. http://fose.ethz.ch/slides/gamma.pdf
![Page 5: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/5.jpg)
PatternsinPhysical Architecture• When aroomhasawindow with aview,thewindowbecomes afocalpoint:peopleareattracted tothewindow andwant tolookthrough it.Thefurniture intheroomcreates asecondfocalpoint:everyone isattracted toward whatever pointthefurniture aimsthem at (usually thecenteroftheroomoraTV).Thismakes peoplefeel uncomfortable.They want tolookoutthewindow,andtoward theother focusat thesame time.Ifyou rearrange thefurniture,so that itsfocalpointbecomes thewindow,then everyone willsuddenly noticethat theroomis much more“comfortable”
LeonardBudney,Amazon.com review ofTheTimeless Way ofBuilding
![Page 6: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/6.jpg)
Design Pattern : Pourquoi ?•Validation qualitative des acquis et de la connaissance pratique
•Vers une « ingénierie » (caractère systématique) du logiciel•Faciliter la réutilisation de savoir faire•Identifier, comprendre et appréhender des solutions récurrentes (e.g., API, framework existant)
•Indispensable pour •Comprendre l'existant•Réutiliser / étendre / tester l'existant•Construire de nouveaux systèmes logiciels
6
![Page 7: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/7.jpg)
Sur la réutilisation...
• Les langages informatiques modernes orientés objet permettent la réutilisation
§par importation de classes§par héritage : extension / spécialisation§par l'inversion de contrôle (aspects)
7
![Page 8: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/8.jpg)
Design Pattern : C'est quoi ?
• Un fragment d'architecture à objets
• Une solution « classique » à un problème fréquent
• Une solution indépendante des algorithmes
• Une solution qui découple les différents problèmes et leurs différentes réponses
8
![Page 9: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/9.jpg)
Design Pattern : Origine ?
• Concept proposé pour les architectures de bâtiments (Christopher Alexander)
• Début d'application aux architectures logicielles en 1987
• Visibilité publique en 1994 grâce au livre§Design patterns: elements of reusable object-oriented
software (Gamma, Helm, Johnson et Vlissides, dit le Gang of Four : GoF)
9
![Page 10: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/10.jpg)
• Context:FileSystem– Files,directories
• Goal:Compute thenumber offilesinthefilesystem
• Haveyou got apattern?(areusable solutiontotheproblem)
• Solutionin…– UML– Java
10
![Page 11: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/11.jpg)
![Page 12: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/12.jpg)
Elements ofaPattern• Name• Problem– When thepatternis applicable
• Solution– Designelements andtheir relationships– Abstract(mustbe specialized/instantiated)
• Consequences– Cost versusbenefits– Flexibility,extensibility– Variationsinthepatternmay imply difference consequences
![Page 13: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/13.jpg)
Design Pattern : Catégories ?• Patrons de création§ ils ont pour but de gérer les problèmes de création de
nouveaux objets§ Abstract Factory, Builder, Factory Method, Prototype, Singleton
• Patrons de structure§ ils servent à organiser les informations dans un graphe
d'objets§ Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
• Patrons de comportement§ ils servent à maîtriser les interactions entre objets
§ Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor, Callback
13
![Page 14: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/14.jpg)
Design Pattern : Catégories ?
14
![Page 15: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/15.jpg)
![Page 16: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/16.jpg)
Composite• Applicability– Youwant torepresent part-whole hierarchies ofobjects
– Youwant tobe abletoignorethedifference betweencompositionsofobjects andindividual objects
• Consequences– Makes theclientsimple,sinceit can treat objects andcompositesuniformly
– Makes it easy toadd newkinds ofcomponents
– Canmake thedesignoverlygeneral• Operationsmay notmake senseonevery class
• Compositesmay contain onlycertaincomponents
16
![Page 17: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/17.jpg)
Composite
• Examples– shoppingcart:product ofasingleitemoraggregation ofmultipleitems;howtocomputethecost?
– filesystem– hierarchical state-machine
– AWT(conteneurgraphique)
17
![Page 18: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/18.jpg)
Composite(example)
![Page 19: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/19.jpg)
But de Composite :« Composer des objets sous la forme d'arbres pour représenter les hiérarchies »
Design Pattern Composite (structural)
for(Composant c : enfants)c.opération() ;
![Page 20: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/20.jpg)
Exemple 1
Composite (structural)
formes.forEach(f-> f.déplacer());
![Page 21: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/21.jpg)
Exemple 2
fichiers.forEach(f-> f.déplacer());
Composite (structural)
![Page 22: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/22.jpg)
![Page 23: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/23.jpg)
Composite(example)• Component(java.awt.Component)
– déclarel'interfacecommuneàtouslesobjets– implémentelecomportementpardéfautpourtouteslesclassessinécessaire– déclarel'interfacepourgérerlescomposantsfils– Définitl'interfacepouraccéderaucomposantparent(optionnel)
• Leaf représenteunefeuille (java.awt.Button)– Implémentationducomportement
• Composite(java.awt.Container)définitlecomportementdescomposantsayantdesfils,stockelesfilsetimplémentelesopérationsnécessairesàleurgestion– Liendanslahiérarchie– Comportement:fusiondescomportementsdesfils
• Lesclients(affichagegraphique)utilisentl'interfaceComponent,silereceveurestunefeuillelarequêteestdirectementtraitée,sinonleCompositeretransmethabituellementlarequêteàsesfilseneffectuantéventuellementdestraitementssupplémentairesavantet/ouaprès
![Page 24: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/24.jpg)
![Page 25: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/25.jpg)
![Page 26: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/26.jpg)
![Page 27: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/27.jpg)
![Page 28: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/28.jpg)
Ensure aclasshasoneinstance,andprovideaglobalpointofaccess toit.
![Page 29: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/29.jpg)
![Page 30: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/30.jpg)
« Singleton »• Applicability– Theremustbe exactly oneinstanceofaclass– When it mustbe accessibletoclientsfrom awell-known place– When thesoleinstanceshould be extensiblebysubclassing,withunmodified clientsusing thesubclass
• Consequences– Controlled access tosoleinstance– Reduced name space (vs.globalvariables)– Canbe refined insubclass orchanged toallow multipleinstances
![Page 31: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/31.jpg)
Implementation ofSingleton
• Constructor isprotected
• Instancevariableisprivate
• Publicoperationreturns singleton– Maylazily createsingleton
• Subclassing– Instance()method canlookupsubclass tocreate inenvironment
•
![Page 32: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/32.jpg)
Implementation ofSingleton
• Constructor is protected,Instancevariableis private
![Page 33: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/33.jpg)
![Page 34: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/34.jpg)
« Singleton »:Exercice
LorsdelaconversionduString enURL,deserreurspeuventsurvenir(MalformedURLException ).Onvoudraitcollecterceserreursdansuncollecteurglobalàtoutleprogramme.
![Page 35: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/35.jpg)
![Page 36: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/36.jpg)
![Page 37: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/37.jpg)
Patron « Strategy »• L'objectif est de mettre en œuvre des algorithmes
différents avec un choix dynamique de la mise en œuvre
• Déléguer• Analogie§permet de remplacer les « pointeurs de fonction »
37
![Page 38: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/38.jpg)
Patron « Strategy » - rôles
• Strategy§définit une interface pour configurer l'algorithme
(paramètres) et l'exécuter• ConcreteStrategy§définit une mise en œuvre activée par l'opération
d'exécution• Context§désigne l'algorithme concret en vigueur§peut contenir des données pour l'algorithme
38
![Page 39: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/39.jpg)
Patron « Strategy » - structure
39
![Page 40: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/40.jpg)
Machineàcalculer(compromis,différentesstratégies)
![Page 41: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/41.jpg)
Bad#1
![Page 42: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/42.jpg)
Bad#2(if-then-else)
![Page 43: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/43.jpg)
Bad#3(everything inoneplace)
![Page 44: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/44.jpg)
Patron « Strategy » - example
44
![Page 45: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/45.jpg)
![Page 46: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/46.jpg)
Strategy (behavior)
Comment choisir à l'exécution l'implémentation ?
• On veut dans ce cas choisir en fonction du contexte telle ou telle stratégie
![Page 47: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/47.jpg)
But :Définir une famille d'algorithmes interchangeables dynamiquement
–Stratégie : interface pour 1 famille d'algorithmes–StratégieConcrète : Implémentation d'un algorithme–Stratège: désigne l'algorithme concret en vigueur– Peut fournir des données aux algorithmes
Strategy (behavior)
![Page 48: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/48.jpg)
Exemple basique : liste triéeL'algorithme de tri peut être remplacé
Strategy (behavior)
![Page 49: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/49.jpg)
Patron de ConceptionStratégie / Strategy (comportement)
ListeTriée liste = new ListeTriée() ;liste.définirTrieur(new BubbleSort()) ;// ...Liste.trier() ;// ...liste.définirTrieur(new QuickSort()) ;
![Page 50: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/50.jpg)
Patron « Strategy » - exercice
50
Un jeu vidéo peut avoir une partie en cours. Une partiepossède un unique niveau de difficulté choisi lors de lacréation de la partie et pouvant changer au cours decelle-ci. Il existe 3 niveaux de difficulté : facile, normal etdifficile.
Modéliser le jeu, les parties et les niveaux de difficultésen fonction du patron de conception Stratégie.
![Page 51: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/51.jpg)
![Page 52: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/52.jpg)
State• Exemple
– Éviterlesinstructionsconditionnellesdegrandetaille(ifthen else)– Simplifierl'ajoutetlasuppressiond'unétatetlecomportementquiluiestassocié– Jeuvidéo:comportementdes« bébêtes »avecmémoiredelaposition,dela
vitesseetdeladirection(intelligence)=>décisiondel'évolutiondel'état– Étatd'uneconnexionréseau(recherche,établie,interrompue,fermée)
• Intention– Modifierlecomportementd'unobjetquandsonétatinternechange– Obtenirdestraitementsenfonctiondel'étatcourant– Toutestmisenplacepourdonnerl'impressionquel'objetluimêmeaétémodifié
• Champsd'application– Implanterunepartieinvarianted'unalgorithme– Partagerdescomportementscommunsd'unehiérarchiedeclasses
52
![Page 53: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/53.jpg)
Patron « State »• L'objectif est de gérer les états d'un objet par une
hiérarchie de classes
• Exemple• La fonction "display" d'une icône représentant une connexion change
selon l'état.• Pour le code qui invoque display, il suffit de changer dynamiquement
l'objet qui implémente l'état pour que cette particularité soit insensible
53
![Page 54: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/54.jpg)
Patron « State » - structure
54
Context estuneclassequipermetd'utiliserunobjetàétatetquigèreuneinstanced'unobjetConcreteStateState définituneinterfacequiencapsulelecomportementassociéavecunétatparticulierdeContextLesConcretState implémententuncomportementassociéavecl'étatdeContext
IlrevientsoitàContext,soitauxConcreteState dedéciderdel'étatquisuccèdeàunautreétat
![Page 55: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/55.jpg)
ImplémentationdeTCP/IP
open()close()send()acknowledge()synchronize()
status : String
TCP/IP::send(s : Stream) {if state = 'open'
{(…)}
if state = 'closed'{(…)}
if state = 'idle'{(…)}
}
TCP/IP
![Page 56: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/56.jpg)
Problème
• Commentéviterquel'étatdelaconnexionsoitvérifiéàchaquefoisqu'unpaquetestenvoyé?
![Page 57: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/57.jpg)
Solution
• Isolerlescomportementsdépendantsdesdifférentsétatsdeconnexiondansdesclassesdifférentes.
![Page 58: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/58.jpg)
End'autrestermes:
TCP/IP TCP/IP State
open()
Close
open()
Open
open()
open()close()send()acknowledge()synchronize()
status
Idle
open()
![Page 59: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/59.jpg)
Exempledeconnexion
: TCP/IP : Close
2- open()1- open()
TCP/IP::open() {this.status.open();
}
![Page 60: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/60.jpg)
Exempledeconnexion
: TCP/IP : Close
: Open
3- deletelink
4- newlink
![Page 61: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/61.jpg)
Conséquences
• Chaqueinstancedelaclasse“TCP/IP” estassociéeàuneinstanced'unesous-classede“TCP/IPState”.
• Lavérificationdel'étatn'estplusnécessaire.
![Page 62: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/62.jpg)
Observations
• CettesolutionestutiliséedanslaplupartdesimplémentationsduprotocoleTCP/IPsurUnix.
• Unesolutionsimilaireestutiliséedansplusieurséditeursgraphiques(comportementd'unoutilselonletypedefiguresélectionnée).
![Page 63: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/63.jpg)
Patron « State » - example
63
![Page 64: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/64.jpg)
Problème
• Commenttraiterunobjetdontlecomportementestfortementdépendantdesonétat,sansvérifier,àchaqueappeld'uneopération,l'étatactuel?
![Page 65: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/65.jpg)
Contexte
• Lecomportementd'unobjetdépenddesonétat.
• Différentesopérationscontiennentdesopérateursconditionnelssurl'étatdel'objet.
![Page 66: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/66.jpg)
Solution(1/2)
/Context /State
/handle() *
/ConcreteState *
/handle() *
/request() *
1
![Page 67: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/67.jpg)
Solution(2/2)
TCP/IP TCP/IP State
open()
Close
open()
Open
open()
open()
:State
context state
concretestate
![Page 68: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/68.jpg)
Conséquences
• Lecomportementspécifiqueàunétatestisolé.
• Lestransitionsd'étatsontexplicites.
• Lesobjets-étatspeuventêtrepartagés.
![Page 69: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/69.jpg)
Compromisd'implémentation
• Quidéfinitlestransitionsd'état?
• Créationetdestructiondesétats.
• Utilisationdudispatch dynamique.
![Page 70: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/70.jpg)
Patron « State » - exercice
70
Lamontredigitale
La montre que nous étudions est très simple. Elle possède deux boutons : avance etmode. Le mode courant est le mode Affichage. Quand on appuie une fois sur lebouton mode, la montre passe en modification heure. Chaque pression sur le boutonavance incrémente l’heure d’une unité. Quand on appuie une nouvelle fois sur lebouton mode, la montre passe en modification minute. Chaque pression sur le boutonavance incrémente les minutes d’une unité. Quand on appuie une nouvelle fois sur leboutonmode, la montre repasse en mode affichage.
1. Représenterlediagrammed’étatsdelamontre2. Proposezuncodagesimpledelamontre.Etudiezensuitelesmodificationsàapporteràvotre
versionaveclesmodificationssuivantes :a. Unenouvellefonctionnalitéapparaîtdanslamontre :leréglagedessecondes(quandonpresseleboutonmode encours
deréglagedesminutes,leréglageconsistejusteenuneremiseàzéroenappuyantsuravance).b. Unnouveauboutonapparait :l’avancerapide,quipermetd’incrémenterlesheuresde5en5,etlesminutesde10en10.c. Unenouvellefonctionnalitéapparait :quanddesactionssontsanseffet(p.ex.,avance ouavancerapideenmode
affichage),lamontreémetunbip.3. Analysezvotresolutiondupointdevuedelamaintenance.4. ProposezunesolutionenutilisantcettefoislepatrondeconceptionState.Reprenezles
modificationsdelaquestion2.5. EtudiezlesdifférentesimplémentationsdudesignpatternState.
![Page 71: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/71.jpg)
![Page 72: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/72.jpg)
Patron « Command »• L'objectif est de découpler§ le choix d'une action à faire dans une certaine situation
(e.g., undo)§ la détection de la situation et l'exécution de l'action décidée
è Encapsuler une requête comme un objet
72
![Page 73: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/73.jpg)
![Page 74: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/74.jpg)
![Page 75: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/75.jpg)
![Page 76: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/76.jpg)
![Page 77: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/77.jpg)
Patron « Command » - rôles• client
§ chargé de la création des commandes concrètes et de leur association avec des situations
• invoker§ chargé de détecter une situation et de faire exécuter la commande
correspondante• receiver
§ effectue le travail requis par la commande• command
§ déclare une opération d'exécution• concrete command
§ fournit une méthode pour l'opération d'exécution77
![Page 78: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/78.jpg)
Patron « Command » - structure
78
![Page 79: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/79.jpg)
Collaborations
• Leclientcrée l'objetConcreteCommand etspécifie ledestinataire.
• L'objetInvoker emmagasine l'objetConcreteCommand.
• L'objetInvoker émet une requête eninvoquant “execute” surlacommande.– Lorsque lacommande est réversible,
ConcreteCommand emmagasinel'état nécessaire pourrevenir dansl'état précédant l'invocationde“execute”.
• L'objetConcreteCommand invoquelesopérations dudestinataire pourexécuter larequête.
![Page 80: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/80.jpg)
Patron « Command » - example
80
![Page 81: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/81.jpg)
Intention
• Encapsuler une requête sousforme d'objet– paramétrer lesclientsavecdifférentes requêtes,– filesderequêtes– “logs”derequêtes– supportd'opérations réversibles (« undo »)
![Page 82: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/82.jpg)
![Page 83: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/83.jpg)
![Page 84: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/84.jpg)
![Page 85: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/85.jpg)
![Page 86: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/86.jpg)
![Page 87: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/87.jpg)
![Page 88: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/88.jpg)
![Page 89: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/89.jpg)
Patron « Observer »• L'objectif est de propager les changements d'état d'un
objet vers d'autres objets
89
![Page 90: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/90.jpg)
Patron « Observer » - rôles• subject§Comporte un état interne
• type non spécifié• un patron de conception est indépendant de ce genre de détail
§Est chargé de gérer une collection d'abonnés capable de recevoir des notifications
§Est chargé d'envoyer un message aux abonnés lorsque son état change
• observer§Est capable de réagir à la réception d'un message de
notification venant d'un sujet
90
![Page 91: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/91.jpg)
Patron « Observer » - structure
91
![Page 92: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/92.jpg)
Patron « Observer » - example
92
![Page 93: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/93.jpg)
![Page 94: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/94.jpg)
![Page 95: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/95.jpg)
![Page 96: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/96.jpg)
![Page 97: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/97.jpg)
![Page 98: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/98.jpg)
Template• Applicability
– When analgorithm consists ofvarying andinvariantpartsthatmustbe customized
– When common behavior insubclasses should be factoredandlocalized toavoid codeduplication
– Tocontrolsubclass extensionstospecific operations
• Consequences– Codereuse– Inverted “Hollywood”control:
don't callus,we'll callyou– Ensures theinvariantpartsofthe
algorithm arenotchanged bysubclasses
![Page 99: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/99.jpg)
![Page 100: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/100.jpg)
![Page 101: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/101.jpg)
![Page 102: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/102.jpg)
TemplateMethodinanexisting API
• http://developer.classpath.org/doc/javax/swing/table/
• TableModel• AbstractTableModel• DefaultTableModel
• Demo
![Page 103: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/103.jpg)
![Page 104: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/104.jpg)
![Page 105: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/105.jpg)
Noimplementation of
getColumnCount()
![Page 106: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/106.jpg)
![Page 107: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/107.jpg)
![Page 108: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/108.jpg)
« Adapter »aka Wrapper(Mariagedeconvenance)
![Page 109: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/109.jpg)
• Applicability– Youwant touseanexisting class,andits interfacedoes notmatchtheone
you need– Youwant tocreate areusable classthat cooperates with unrelated classes
that don't necessarily havecompatibleinterfaces– Youneed touseseveral subclasses,butit'simpractical toadapt their
interfacebysubclassing each one
• Consequences– Exposesthefunctionality ofanobject inanother form– Unifiestheinterfacesofmultipleincompatibleadaptee objects– Lets asingleadapterwork with multipleadaptees inahierarchy
![Page 110: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/110.jpg)
![Page 111: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/111.jpg)
![Page 112: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/112.jpg)
Patron « Adapter »• Objectif :§Permet le réemploi d'un type qui n'est pas conforme à une
interface attendue• Exemple§votre code emploie une interface Stack « idéale » (push,
pop, top, size)§ la classe Java disponible n'a pas exactement cette interface
112
![Page 113: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/113.jpg)
Patron « Adapter » - rôles• Client§ emploie des opérations de l'interface Adaptor
• Adaptor§définit les opérations attendues par le Client
• ConcreteAdaptor§ réalise les opérations par délégation vers Adaptee
• Adaptee§ contient la mise en œuvre à réutiliser
113
![Page 114: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/114.jpg)
Patron « Adapter » - structure
114
![Page 115: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/115.jpg)
Patron « Adapter » -diagramme de séquence
115
![Page 116: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/116.jpg)
![Page 117: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/117.jpg)
![Page 118: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/118.jpg)
![Page 119: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/119.jpg)
javax.faces.context.ExternalContext
internally usesServletContext,HttpSession,HttpServletRequest,HttpServletResponse,etc.
![Page 120: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/120.jpg)
« Facade »
![Page 121: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/121.jpg)
Facade vsAdapter• Motivation– Modular decomposition:separate theclientfromsubsystem/Adaptee
– Facade:simplify theinterface(anewinterfacetothelibrary)– Adapter:matchanexisting interface(adapt tothelegacy)
• Adapter:interfaceis given (constraint)– Nottypically true inFacade
• Adapter(polymorphic)– Dispatch dynamically tomultipleimplementations– Typically choose theimplementation statically
![Page 122: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/122.jpg)
![Page 123: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/123.jpg)
Patron « Abstract Factory »• L'objectif est de §permettre de créer des familles de produits §masquer les mécanismes de choix des classes de mise en
œuvre de ces produits
123
![Page 124: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/124.jpg)
Patron « Abstract Factory » - rôles• Client
§ Détient une référence sur une Abstract factory§ Crée des produits par appel des opérations de cette référence§ Ne connaît pas la classe concrète des produits
• Abstract Product§ Masquer la classe concrète§ Offrir un ensemble d'opérations applicables à tous les variantes
d'un même produit• Abstract Factory
§ Comporte une opération de création (pour chaque produit, une opération de création retourne un objet produit)
§ La classe concrète des produits est masquée
124
![Page 125: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/125.jpg)
Patron « Abstract Factory » - rôles• Concrete Product§Contient la mise en œuvre spécifique des opérations§Non accessible au client§Peut être amené à jouer un rôle d'adaptateur
• Concrete Factory§Chargée de mettre en œuvre la création des produits
concrets§Une fabrique concrète pour une plate-
forme/variante/version donnée ne fait que des produits concrets de la même plate-forme/variante/version
125
![Page 126: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/126.jpg)
Patron « Abstract Factory » - Structure
126
![Page 127: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/127.jpg)
Patron « Abstract Factory » - Collaboration
127
![Page 128: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/128.jpg)
Patron « Abstract Factory » - Example
128
![Page 129: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/129.jpg)
![Page 130: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/130.jpg)
Associer « Adapter » et « Abstract Factory »
130
• Les différentes fabriques concrètes existantes§ créent des produits ayant des interfaces différentes§doivent être réunies par un concept de produit abstrait
• Solution§on interpose un PC Adapter entre Abstract product et
Concrete product
![Page 131: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/131.jpg)
Associer « Adapter » et « Abstract Factory »
131
![Page 132: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/132.jpg)
![Page 133: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/133.jpg)
Patron « Visitor »• Objectif :§ faciliter l'organisation des méthodes de traitement d'une
structure de graphe/d'arbre§ séparer le choix des techniques de traitement de la
description des types§permet d'étendre ou de modifier les traitements en ne
changeant qu'un fichier source
133
![Page 134: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/134.jpg)
Patron « Visitor » - rôles• Visitor§Définir une opération dite de traitement pour chaque type
d'élément (visitFoo())§Cette opération sera appelée par chaque élément pour
déclencher le traitement qui le concerne• Element§Déclare une opération qui sera appelée par le Visitor
(accept())• ConcreteElement§Mise en œuvre de Element::accept()§Le but est de déclencher le traitement correct
134
![Page 135: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/135.jpg)
Patron « Visitor » - structure
135
![Page 136: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/136.jpg)
Patron « Visitor » -diagramme de séquence
136
![Page 137: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/137.jpg)
Patron « Visitor »• Remarque :§Le contrôle du parcours est sous la responsabilité du
visiteur, pas des éléments• Quand utiliser le patron « Visitor »§Pour parcourir des structures d'éléments (graphes, arbres)§Quand l'ensemble des types change peu souvent
• si nouveau type : il faut modifier tous les visiteurs
§Quand les traitements changent souvent• une seule classe à ajouter ou à modifier
137
![Page 138: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/138.jpg)
Patron « Visitor »: exercice
138
Dans cet exercice nous allons modéliser des expressions arithmétiques sous la formed’un arbre binaire. Seules l’addition et la soustraction devront être considérées. UnArbre possède un Noeud racine et un nom. Un Noeud est soit un NoeudPlus, soit unNoeudMoins, soit un NoeudValeur. NoeudPlus et NoeudMoins possède chacun unnoeud droit et un noeud gauche. NoeudValeur possède une valeur (un entier). Vousmodéliserez Nœud sous la forme d’une interface.
1. Créezlediagrammedeclassesdel’arbre.2. AjoutezlepatrondeconceptionVisiteur àl’arbre:ajoutezlesméthodesaccept(VisiteurArbre) àce
diagrammedeclassesetdéfinissezl’interfaceVisiteurArbre etsesméthodescommevuencours.3. DonnezlecodeJavadechacunedesméthodesaccept ajoutée.4. Pourquoilesméthodesaccept sont-ellesnécessaires?5. ImplémentezenJavaunvisiteurpermettantd’afficherdanslaconsoleetennotationpost-fixéela
formulearithmétiquequereprésentel’arbre.6. ImplémentezenJavaunvisiteurpermettantdecalculerlaformulearithmétiquequereprésente
l’arbre.Unindice:levisiteurposséderaunepilestockantlesvaleursvisitées.VousutilisezalorslepatronVisiteur pourfaireunInterpréteur demanièrepropre.
![Page 139: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/139.jpg)
![Page 140: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/140.jpg)
![Page 141: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/141.jpg)
![Page 142: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/142.jpg)
![Page 143: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/143.jpg)
![Page 144: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/144.jpg)
![Page 145: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/145.jpg)
![Page 146: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/146.jpg)
![Page 147: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/147.jpg)
• Expliquerquedesnouveauxparadigmespeuventremplacerdespatternsobjets,exemplesdanslecasdel’interpreteur
![Page 148: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/148.jpg)
![Page 149: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/149.jpg)
Patron « Memento »• L'objectif est de capturer l'état d'un objet pour le
stocker et le restaurer plus tard, sans briser l'encapsulation
• Principe : une interface Memento sert de type opaque
149
![Page 150: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/150.jpg)
Patron « Memento » - rôles• Originator§possède un état à sauver/restaurer§ est capable de créer des mémentos concrets
• Memento§ interface permettant de transmettre des états sauvegardés
de manière opaque• ConcreteMemento§mise en œuvre de stockage d'un état
• Caretaker§ capable de stocker des mémentos et de les récupérer
150
![Page 151: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/151.jpg)
Patron « Memento » - structure
151
![Page 152: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/152.jpg)
Patron « Memento » - sauvegarde
152
![Page 153: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/153.jpg)
Patron « Memento » - restauration
153
![Page 154: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/154.jpg)
![Page 155: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/155.jpg)
Poids-Mouche / Flyweight (structurel)
Problème:Instanciation d’un (très très) grand nombre de petits objets
èTrop gourmand au niveau de la mémoire
Exemples :
Du texte contenant un grand nombre de caractères
Un jeu massivement multi-joueurs (les objets graphiques)
L'ADN
![Page 156: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/156.jpg)
But :Partager efficacement un grand nombre de petits objets
Fonctionnement :Certaines données sont extraites de l'objet pour en minimiser le nombre d'instanciation
Exemple : l'ADNSeuls 4 bases azotées créées (G, A, T, C)Leur position est stockée en dehors (dans l'ADN)
=> Sinon explosion du nombre d'instances de bases azotées
Patron de ConceptionPoids-Mouche / Flyweight (structurel)
![Page 157: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/157.jpg)
![Page 158: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/158.jpg)
![Page 159: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/159.jpg)
FabriquePoidsMouche : créer des objets uniquement si nécessaire (sinon retourne l'objet déjà existant)L'utilisation du patron dans le code client passe par la fabrique pour obtenir des instances
Poids-Mouche / Flyweight (structurel)
![Page 160: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/160.jpg)
![Page 161: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/161.jpg)
![Page 162: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/162.jpg)
![Page 163: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/163.jpg)
![Page 164: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/164.jpg)
![Page 165: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/165.jpg)
![Page 166: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/166.jpg)
![Page 167: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/167.jpg)
![Page 168: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/168.jpg)
![Page 169: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/169.jpg)
![Page 170: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/170.jpg)
![Page 171: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/171.jpg)
![Page 172: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/172.jpg)
![Page 173: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/173.jpg)
#1Héritage
![Page 174: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/174.jpg)
#2Uneautresolution
![Page 175: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/175.jpg)
Augmentationduprixdesingrédientsobligeàmodifierlecodeexistant.Quiddesnouveauxingrédients?Quiddesnouvellesboissons? Lesclassesdoiventêtreouvertes
àl’extension,maisferméesàlamodification.
![Page 176: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/176.jpg)
LepatternDécorateur attachedynamiquementdesresponsabilités/fonctionnalitéssupplémentairesàunobjet.Ilfournitunealternativesoupleàl’héritage,pourétendrelesfonctionnalités.
![Page 177: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/177.jpg)
![Page 178: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/178.jpg)
![Page 179: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/179.jpg)
![Page 180: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/180.jpg)
![Page 181: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/181.jpg)
![Page 182: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/182.jpg)
![Page 183: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/183.jpg)
AdapterversusDecorator ?
Décorateur =Ajoutdecomportementsauxopérationsexistantes.Interfacenonmodifiée.
Adaptateur =Ajoutd'interfacesàunobjet
![Page 184: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/184.jpg)
JUnit and…Designpatterns
Worthreading!http://junit.sourceforge.net/doc/cookstour/cookstour.htm
![Page 185: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/185.jpg)
DesignPatternsfromGOF
![Page 186: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/186.jpg)
Et dans le futur ? (from E. Gamma)
186
![Page 187: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/187.jpg)
References
187
![Page 188: (OBJECT-ORIENTED)DESIGN PATTERNSBenoit.Combemale/course/l3info/pattern-design.pdf · – UML – Java 10. Elementsof a Pattern • Name • Problem ... Patron « Strategy » - exercice](https://reader031.fdocuments.in/reader031/viewer/2022022610/5b98400d09d3f2210c8bd2ce/html5/thumbnails/188.jpg)
References
http://refcardz.dzone.com/refcardz/design-patterns