Ingineria programarii: Sabloane de proiectare comportamentale 2
-
Upload
enrollinfo -
Category
Documents
-
view
255 -
download
1
Transcript of Ingineria programarii: Sabloane de proiectare comportamentale 2
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 1/120
Ingineria programării
10. Şabloane de proiectarecomportamentale (II)
Florin LeonUniversitatea Tehnică „Gheorghe Asachi” din Iaşi
Facultatea de Automatică şi Calculatoare
http://florinleon.byethost24.com/curs_ip.htm
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 2/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 3/120
3
Terminologie
Strategy = Strategie
Template Method = Metoda Tipar
State = Stare Interpreter = Interpretor
Visitor = Vizitator
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 4/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 5/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 6/120
6
SimUDuck
Extensii…
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 7/120
7
Extensii...
?
Alte clase…
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 8/120
8
Extensii...
Cod duplicat
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 9/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 10/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 11/120
11
Încapsulareacomportamentelor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 12/120
12
Stabilirea strategiei
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 13/120
13Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 14/120
14
Definiţie
Şablonul Strategie defineşte o familie dealgoritmi, încapsulează fiecare algoritm şi îiface interschimbabili. Acest şablon permitealgoritmului să varieze independent de clienţiicare îl utilizează
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 15/120
15
Diagrama UML
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 16/120
16
Exemple
Structură...
Răţuştele...
Sortări... Grafice...
Personaje de joc...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 17/120
Structură
17
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 18/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 19/120
Grafice
19
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 20/120
Personaje de joc
20
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 21/120
21
Aplicabilitate
Când mai multe clase înrudite diferă doar prinmodul lor de comportare
Când este nevoie de variante diferite ale unui
algoritm
Când un algoritm utilizează date ce nu trebuiecunoscute de către clienţi
Când o clasă defineşte mai multe comportamenteiar acestea apar în operaţiile ei sub formă deinstrucţiuni condiţionale multiple
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 22/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 23/120
Şabloane de proiectarecomportamentale (II)
1. Strategia2. Metoda Tipar
3. Starea
4. Interpretorul
5. Vizitatorul
6. Concluzii
7. Recapitularea şabloanelor de proiectare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 24/120
24
Cafea şi ceai
Reţetele sunt similare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 25/120
25
Clasele corespunzătoare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 26/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 27/120
Implementare
27
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 28/120
28
Definiţie
Şablonul Metoda Tipar defineşte scheletulunui algoritm dintr-o operaţie, transferând uniipaşi către subclase. Şablonul permite
subclaselor să redefinească anumiţi paşidintr-un algoritm fără a schimba structuraacestuia
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 29/120
29
Diagrama UML
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 30/120
30
Exemple
Structură...
Ceaiul şi cafeaua...
Datele clienţilor... Sortările temperaturilor...
Triunghiurile...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 31/120
31
Ceaiul şi cafeaua
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 32/120
Datele clienţilor
32
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 33/120
Triunghiuri
33
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 34/120
34
Metode ancoră
engl. “hooks”
Pot fi suprascrise
opţional de clasele
derivate
ancor ă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 35/120
35
Exemplu de ancoră
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 36/120
36
Suprascrierea ancorei
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 37/120
37
Principiul Hollywood
„Nu ne suna tu, te sunăm noi”
Componentele de nivel scăzut se pot ancora în sistem, dar componentele de nivel înalt
determină când vor fi folosite acestea şi cum
Componentele de nivel înalt apeleazăcomponentele de nivel scăzut şi nu invers
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 38/120
38
Sortare cu Metoda Tipar
Metoda care trebuie
implementată pentrucompletarea tiparului
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 39/120
Sortare cu Metoda Tipar
39
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 40/120
40
Applet-uri
Metode ancoră: init
start
stop
destroy
paint
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 41/120
41
Aplicabilitate
Când un algoritm este compus din părţi invariabile,care sunt tratate o singură dată, şi părţi variabile,implementate de subclase
Când comportarea comună a mai multor subclasepoate fi extrasă şi localizată pentru evitareaduplicării codului
Când sunt necesare operaţii ancoră (engl. “hooks”)
Pentru construirea platformelor (engl. “frameworks”)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 42/120
42
Avantaje
Reprezintă o tehnică fundamentală pentrureutilizarea codului
Structura de control respectă Principiul
Hollywood: clasa părinte apelează operaţiileunei subclase şi nu invers
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 43/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 44/120
Şabloane de proiectarecomportamentale (II)
1. Strategia2. Metoda Tipar
3. Starea
4. Interpretorul
5. Vizitatorul
6. Concluzii
7. Recapitularea şabloanelor de proiectare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 45/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 46/120
46
Abordarea 1
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 47/120
47
Abordarea 1
Număr foarte mare de instrucţiuni condiţionale
Pentru s stări şi n acţiuni, trebuie n metode,
fiecare cu s teste
Aici trebuie 4 metode, fiecare cu 4 teste
Când se adaugă noi stări, trebuie modificateaceste teste
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 48/120
48
Abordarea 2
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 49/120
49
Exemplu: clasă de stări
Clasa NoQuarterState
schimbarea stării
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 50/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 51/120
51
Tranziţii de stare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 52/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 53/120
53
Diagrama UML
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 54/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 55/120
Structură
55
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 56/120
Gumball Machine
56
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 57/120
Conturi
57
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 58/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 59/120
59
Avantaje şi dezavantaje
Localizează comportarea specifică de stare şipartiţionează comportarea pentru diferite stări
Face tranziţiile de stare explicite
Obiectele Stare pot fi partajate, dacă nu au câmpuri Pot exista mai multe Contexte care partajează Stările
Se face un compromis: creşterea flexibilităţii pe baza
creşterii numărului de clase Alternativa: cod monolitic cu numeroase if -uri, greu de
înţeles şi modificat
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 60/120
60
Discuţie
Dacă tranziţiile se fac în clasele de stări, secreează dependenţe între acestea
Tranziţiile fixe se recomandă să fie efectuate în
Context Tranziţiile dinamice se pot face în Stările Concrete
Pentru aceasta, trebuie să existe metode de acces în
Context pentru schimbarea stării curente
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 61/120
61
Discuţie
Strategia şi Starea au diagrame asemănătoare
Strategia este o alternativă la moştenire. Starea
este o alternativă la instrucţiunile condiţionale
Strategiile sunt de obicei specificate de la început(chiar dacă se pot schimba uşor). Stările se schimbădinamic prin însăşi motivaţia şablonului
Obiectele Stare pot fi obiecte din Categoria Muscă
(engl. “Flyweight”)
Obiectele Stare sunt deseori obiecte Singleton
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 62/120
Şabloane de proiectarecomportamentale (II)
1. Strategia2. Metoda Tipar
3. Starea
4. Interpretorul
5. Vizitatorul 6. Concluzii
7. Recapitularea şabloanelor de proiectare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 63/120
63
Exemplu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 64/120
64
Soluţie
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 65/120
65
Definiţie
Şablonul Interpretor defineşte oreprezentare a gramaticii unui limbaj
împreună cu un interpretor care utilizează
reprezentarea pentru a interpreta propoziţiiledin limbaj
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 66/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 67/120
67
Exemple
Structură...
Cifre romane...
Rapoarte...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 68/120
Structură
68
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 69/120
Cifre romane
69
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 70/120
Rapoarte
70
Multe clase!
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 71/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 72/120
72
Aplicabilitate
Când trebuie interpretat un limbaj iar
instrucţiunile sale pot fi reprezentate subformă de arbori sintactici abstracţi, mai ales: Când gramatica este simplă
Altfel se pot utiliza generatoare de parsere
(de exemplu Lex, Yacc++, Visual BNF etc.)
Când eficienţa nu este un factor critic
Expresiile regulate sunt de obicei transformate în stări
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 73/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 74/120
74
Avantaje şi dezavantaje
Modificarea şi extinderea gramaticii sunt uşor de realizat Se poate folosi şi moştenirea pentru extindere
Implementarea unei gramatici simple este uşor de făcut Generarea claselor poate fi automatizată
Gramaticile complexe sunt greu de întreţinut Interpretorul necesită câte o clasă pentru fiecare regulă
gramaticală
Adăugarea unei căi noi de interpretare a expresiilor estedificilă
De exemplu verificarea tipurilor într-o expresie prin definirea unei
noi operaţii asupra claselor expresiei
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 75/120
75
Discuţie
Arborele sintactic abstract este o Compunere
(engl. “Composite”)
Categoria Muscă (engl. “Flyweight”) poate ajuta
la partajarea simbolurilor terminale din arbore
Interpretorul poate folosi un Iterator pentru a
traversa structura
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 76/120
Şabloane de proiectarecomportamentale (II)
1. Strategia2. Metoda Tipar
3. Starea
4. Interpretorul
5. Vizitatorul 6. Concluzii
7. Recapitularea şabloanelor de proiectare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 77/120
77
Definiţie
Şablonul Vizitator reprezintă o operaţie careva fi efectuată pe elementele unei structuri deobiecte, permiţând definirea unei operaţii noi
fără a schimba clasele elementelor pe careoperează
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 78/120
Exemplu: clasele Element
78
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 79/120
Exemplu: clasele Visitor
79
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 80/120
Diagrama UML
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 81/120
Diagrama UML
81Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 82/120
82
Exemple
Structură...
Angajaţi...
Zile libere...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 83/120
Structură
83
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 84/120
Angajaţi
84
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 85/120
Zile libere
85
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 86/120
86
Aplicabilitate
Când o structură de obiecte conţine multe clase cu interfeţediferite
Când pe obiectele dintr-o structură trebuie efectuate maimulte operaţii neînrudite
Nu se „poluează” clasele cu aceste operaţii
Când se definesc des noi operaţii pe structură, dar claselestructurii nu se modifică des
Dacă o clasă nu are metoda Accept, se poate deriva pentru a
o adăuga Şablonul este util când nu se pot modifica sursele unor biblioteci
sau platforme pentru adăugarea unor noi funcţii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 87/120
87
Avantaje
Facilitează adăugarea de operaţii noi
Grupează operaţiile înrudite şi le separă pe cele neînrudite
Vizitatorul poate vizita obiecte care nu au o clasă părintecomună, spre deosebire de Iterator
Se pot apela metode diferite în Vizitator în funcţie de tipulobiectului vizitat
Alternativa ar fi testarea tipului obiectului
Poate acumula starea pe măsură ce vizitează obiectele
Pot exista mai mulţi vizitatori într-un sistem
Apelul bidirecţional Accept – Visit permite adăugarea maimultor operaţii la vizitare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 88/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 89/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 90/120
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 91/120
91
Concluzii (ŞPC II)
Strategia defineşte o familie de algoritmi, încapsulează fiecarealgoritm şi îi face interschimbabili
Metoda Tipar defineşte scheletul unui algoritm dintr -o operaţie,transferând unii paşi către subclase
Starea permite unui obiect să-şi modifice comportamentul cândstarea sa internă se schimbă
Interpretorul defineşte o reprezentare a gramaticii unui limbaj împreună cu un interpretor care utilizează reprezentarea pentru ainterpreta propoziţiile din limbaj
Vizitatorul reprezintă o operaţie care va fi efectuată peelementele unei structuri de obiecte, permiţând definirea uneioperaţii noi fără a schimba clasele elementelor pe care operează
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 92/120
92
Şabloanele de proiectare (I)
Cunoaşterea fundamentelor programării orientate pe obiecte
nu implică automat abilităţi de proiectare orientată pe obiecte
Proiectele orientate pe obiecte de succes sunt uşor dereutilizat, extins şi întreţinut
Şabloanele de proiectare recomandă o serie de modalităţi dea proiecta astfel de sisteme
Şabloanele sunt la un nivel mai înalt de abstractizare decât
bibliotecile de funcţii
Şabloanele nu au fost inventate, au fost descoperiterezolvând probleme reale
Reflectă experienţa unor proiectanţi
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 93/120
93
Şabloanele de proiectare (II)
Când sunt folosite corect, şabloanele de proiectarepot face un sistem mai flexibil şi mai uşor de întreţinut
Când sunt folosite fără a fi nevoie, ele cresc inutilcomplexitatea sistemului
Cunoaşterea şabloanelor de proiectare areavantajul folosirii unui vocabular comun, ceea ce
permite exprimarea mai succintă a ideilor deproiectare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 94/120
Şabloane de proiectarecomportamentale (II)
1. Strategia2. Metoda Tipar
3. Starea
4. Interpretorul
5. Vizitatorul 6. Concluzii
7. Recapitularea şabloanelor de proiectare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 95/120
95
Recapitulare
Şabloane creaţionale 1. Metoda Fabrică
2. Fabrica Abstractă
3. Singleton
4. Prototipul
5. Constructorul
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 96/120
96
Metoda Fabrică
Şablonul Metoda
Fabrică defineşte ointerfaţă pentru creareaunui obiect, dar lasăsubclasele să decidă ceclasă să instanţieze.
Şablonul permite unei
clase să cedezesubclaselor instanţiereade obiecte
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 97/120
97
Fabrica Abstractă
Şablonul Fabrica
Abstractă asigură ointerfaţă pentru creareaunor familii de obiecte
înrudite sau
dependente fără a lespecifica clasele
concrete
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 98/120
98
Singleton
Şablonul Singleton
asigură faptul că oclasă are o singurăinstanţă şi oferă unpunct global de acces
la aceasta
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 99/120
99
Prototip
Şablonul Prototip
precizează, folosind oinstanţă prototip, tipurilede obiecte ce vor fi
create şi creează noileobiecte copiind acest
prototip
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 100/120
100
Constructor
Şablonul Constructor
separă construcţia unuiobiect complex de
reprezentarea acestuia,
astfel încât acelaşiproces de construcţiesă poată creareprezentări diferite
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 101/120
101
Recapitulare
Şabloane structurale 1. Adaptorul
2. Faţada
3. Decoratorul
4. Puntea
5. Delegarea
6. Categoria Muscă 7. Compunerea
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 102/120
102
Adaptorul
Şablonul Adaptor converteşte interfaţaunei clase în altăinterfaţă pe care o
aşteaptă clientul. Adaptorul permite săfuncţioneze împreunăclase care altfel nu arputea din cauza
interfeţelorincompatibile
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 103/120
103
Faţada
Şablonul Faţadă
asigură o interfaţăunificată la o mulţimede interfeţe dintr -un
subsistem. Faţadadefineşte o interfaţă denivel mai înalt care face
subsistemul mai uşorde utilizat
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 104/120
104
Decoratorul
Şablonul Decorator
ataşeazăresponsabilităţisuplimentare unui
obiect în mod dinamic.
Decoratorii asigură oalternativă flexibilă laderivare pentru
extinderea
funcţionalităţii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 105/120
105
Puntea
Şablonul Punte
decuplează oabstracţiune deimplementarea ei,
astfel încât cele douăsă poată varia în modindependent
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 106/120
106
Proxy
Şablonul Proxy asigurăun surogat sau un
înlocuitor pentru alt
obiect pentru a controla
accesul la acesta
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
C i M ă
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 107/120
107
Categoria Muscă
Şablonul Categoria
Muscă foloseştepartajarea pentru a
gestiona eficient un
număr mare de obiectede dimensiuni mici
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
C
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 108/120
108
Compunerea
Şablonul Compunere
compune obiecte în
structuri de tip arbore
pentru a reprezenta
ierarhii parte-întreg.
Şablonul permiteclienţilor să tratezeuniform obiecte
individuale şicompuneri de obiecte
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
R it l
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 109/120
109
Recapitulare
Şabloane comportamentale 1. Iteratorul
2. Observatorul
3. Comanda
4. Lanţul Responsabilităţilor 5. Mediatorul
6. Memento
7. Strategia
8. Metoda Tipar
9. Starea10. Interpretorul
11. Vizitatorul
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
It t l
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 110/120
110
Iteratorul
Şablonul Iterator
asigură o cale deaccesare secvenţială aelementelor unui obiect
agregat, fără a expunereprezentarea lui de
bază
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Ob t l
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 111/120
111
Observatorul
Şablonul Observator
defineşte o dependenţă1 la N între obiecte,
astfel încât în cazul în
care un obiect îşischimbă starea, vor fi înştiinţate şi actualizateautomat toate obiectele
sale dependente
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
C d
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 112/120
112
Comanda
Şablonul Comandă încapsulează o cerereca obiect, permiţândparametrizarea
clienţilor cu diferitecereri, formarea uneicozi de cereri saustocarea istoriculuiacestora şi asigurareasuportului pentruanularea operaţiilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
L ţ l R bilităţil
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 113/120
113
Lanţul Responsabilităţilor
Şablonul LanţulResponsabilităţilor evităcuplarea între expeditorul şidestinatarul unei cereri,
acordând mai multorobiecte o şansă de arezolva cererea. Şablonul înlănţuie obiecteledestinatar şi trece cererea
de-a lungul lanţului pânăcând un obiect o rezolvă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
M di t l
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 114/120
114
Mediatorul
Şablonul Mediator defineşteun obiect care încapsuleazămodul în care
interacţionează o mulţimede obiecte. Acest şablonpromovează cuplareaslabă, interzicând obiectelorsă facă referinţe expliciteunul la celălalt şi permite
modificarea independentă ainteracţiunilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
M t
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 115/120
115
Memento
Şablonul Memento
capturează şiexteriorizează stareainternă a unui obiect
fără a viola încapsularea, astfel
încât obiectul să poatăfi readus ulterior la
respectiva stare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
St t i
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 116/120
116
Strategia
Şablonul Strategie
defineşte o familie dealgoritmi, încapsuleazăfiecare algoritm şi îiface interschimbabili. Acest şablon permitealgoritmului să variezeindependent de clienţii
care îl utilizează
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
M t d Ti
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 117/120
117
Metoda Tipar
Şablonul Metoda Tipar defineşte scheletul unuialgoritm dintr-ooperaţie, transferând
unii paşi cătresubclase. Şablonulpermite subclaselor săredefinească anumiţipaşi dintr -un algoritm
fără a schimbastructura acestuia
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Starea
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 118/120
118
Starea
Şablonul Stare
permite unui obiect
să-şi modificecomportamentul când
starea sa internă seschimbă. Obiectul vapărea că îşi schimbăclasa
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Interpretorul
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 119/120
119
Interpretorul
Şablonul Interpretor
defineşte o reprezentarea gramaticii unui limbaj
împreună cu un
interpretor care utilizeazăreprezentarea pentru a
interpreta propoziţiile dinlimbaj
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Vizitatorul
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 2
http://slidepdf.com/reader/full/ingineria-programarii-sabloane-de-proiectare-comportamentale-2 120/120
Vizitatorul
Şablonul Vizitator
reprezintă o operaţiecare va fi efectuată peelementele unei
structuri de obiecte,permiţând definireaunei operaţii noi fără aschimba clasele
elementelor pe careoperează