ingineria programarii: sabloane de proiectare comportamentale 2

120
Ingineria programării 10. Şabloane de proiectare comportamentale (II) Florin Leon Universitatea 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

Upload: enrollinfo

Post on 04-Jun-2018

255 views

Category:

Documents


1 download

TRANSCRIPT

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

Page 2: 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 2/120

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

Page 4: 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 4/120

Page 5: 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 5/120

Page 6: 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 6/120

6

SimUDuck

Extensii… 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

7

Extensii...

?

 Alte clase… 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 8: 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 8/120

8

Extensii...

Cod duplicat

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 9: 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 9/120

Page 10: 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 10/120

Page 11: 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 11/120

11

 Încapsulareacomportamentelor

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 12: 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 12/120

12

Stabilirea strategiei

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 13: 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 13/120

13Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 15: 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 15/120

15

Diagrama UML

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 17: 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 17/120

Structură 

17

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 18: 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 18/120

Page 19: 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 19/120

Grafice

19

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 20: 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 20/120

Personaje de joc

20

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 22: 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 22/120

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

Page 24: 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 24/120

24

Cafea şi ceai 

Reţetele sunt similare 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 25: 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 25/120

25

Clasele corespunzătoare 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 26: 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 26/120

Page 27: 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 27/120

Implementare

27

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 29: 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 29/120

29

Diagrama UML

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 31: 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 31/120

31

Ceaiul şi cafeaua 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 32: 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 32/120

Datele clienţilor  

32

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 33: 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 33/120

Triunghiuri

33

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 35: 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 35/120

35

Exemplu de ancoră 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 36: 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 36/120

36

Suprascrierea ancorei

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 38: 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 38/120

38

Sortare cu Metoda Tipar

Metoda care trebuie

implementată pentrucompletarea tiparului

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 39: 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 39/120

Sortare cu Metoda Tipar

39

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 40: 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 40/120

40

Applet-uri

Metode ancoră:  init

start

stop

destroy

paint

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

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

Page 43: 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 43/120

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

Page 45: 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 45/120

Page 46: 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 46/120

46

Abordarea 1

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 48: 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 48/120

48

Abordarea 2

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 49: 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 49/120

49

Exemplu: clasă de stări 

Clasa NoQuarterState

schimbarea stării 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 50: 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 50/120

Page 51: 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 51/120

51

Tranziţii de stare 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 52: 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 52/120

Page 53: 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 53/120

53

Diagrama UML

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 54: 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 54/120

Page 55: 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 55/120

Structură 

55

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 56: 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 56/120

Gumball Machine

56

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 57: 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 57/120

Conturi

57

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 58: 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 58/120

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

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

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

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

Page 63: 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 63/120

63

Exemplu

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 64: 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 64/120

64

Soluţie 

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

Page 66: 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 66/120

Page 67: 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 67/120

67

Exemple

Structură... 

Cifre romane...

Rapoarte...

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 68: 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 68/120

Structură 

68

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 69: 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 69/120

Cifre romane

69

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 70: 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 70/120

Rapoarte

70

Multe clase!

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 71: 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 71/120

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

Page 73: 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 73/120

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

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

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

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

Page 78: 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 78/120

Exemplu: clasele Element

78

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 79: 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 79/120

Exemplu: clasele Visitor

79

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 80: 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 80/120

Diagrama UML

Page 81: 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 81/120

Diagrama UML

81Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 82: 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 82/120

82

Exemple

Structură... 

 Angajaţi... 

Zile libere...

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 83: 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 83/120

Structură 

83

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 84: 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 84/120

Angajaţi 

84

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Page 85: 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 85/120

Zile libere

85

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

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

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

Page 88: 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 88/120

Page 89: 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 89/120

Page 90: 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 90/120

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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