Sunteți pe pagina 1din 120

Ingineria programrii

10. abloane de proiectare


comportamentale (II)
Florin Leon
Universitatea Tehnic Gheorghe Asachi din Iai
Facultatea de Automatic i Calculatoare

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

abloane de proiectare
comportamentale (II)
1. Strategia
2. 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

Terminologie

Strategy = Strategie
Template Method = Metoda Tipar
State = Stare
Interpreter = Interpretor
Visitor = Vizitator

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

Not

Programele care implementeaz abloanele


descrise i care pot fi descrcate din pagina
cursului sunt parte integrant a prezentrii

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

abloane de proiectare
comportamentale (II)
1. Strategia
2. 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

SimUDuck

Extensii

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

Extensii...

?
Alte clase
7

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

Extensii...

Cod duplicat
8

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

Separarea aspectelor constante


de aspectele variabile

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

ncapsularea
comportamentelor

10

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

ncapsularea
comportamentelor

11

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

Stabilirea strategiei

12

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

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

Definiie

ablonul Strategie definete o familie de


algoritmi, ncapsuleaz fiecare algoritm i i
face interschimbabili. Acest ablon permite
algoritmului s varieze independent de clienii
care l utilizeaz

14

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

Diagrama UML

15

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

Exemple

Structur...
Rutele...
Sortri...
Grafice...
Personaje de joc...

16

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

Structur

17

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

Sortri

18

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

Grafice

19

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

Personaje de joc

20

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

Aplicabilitate

Cnd mai multe clase nrudite difer doar prin


modul lor de comportare

Cnd este nevoie de variante diferite ale unui


algoritm

Cnd un algoritm utilizeaz date ce nu trebuie


cunoscute de ctre clieni

Cnd o clas definete mai multe comportamente


iar acestea apar n operaiile ei sub form de
instruciuni condiionale multiple
21

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

Avantaje i dezavantaje

Definete familii de algoritmi nrudii


Este o alternativ la generarea de subclase
Elimin instruciunile condiionale
Poate furniza implementri diferite pentru acelai
comportament

Numr crescut de obiecte


Unele clase ConcreteStrategy mai simple pot s
nu utilizeze toate informaiile interfeei
22

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

abloane de proiectare
comportamentale (II)
1. Strategia
2. 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

Cafea i ceai

Reetele sunt similare

24

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

Clasele corespunztoare

25

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

Abstractizarea

26

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

Implementare

27

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

Definiie

ablonul Metoda Tipar definete scheletul


unui algoritm dintr-o operaie, transfernd unii
pai ctre subclase. ablonul permite
subclaselor s redefineasc anumii pai
dintr-un algoritm fr a schimba structura
acestuia

28

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

Diagrama UML

29

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

Exemple

Structur...
Ceaiul i cafeaua...
Datele clienilor...
Sortrile temperaturilor...
Triunghiurile...

30

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

Ceaiul i cafeaua

31

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

Datele clienilor

32

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

Triunghiuri

33

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

Metode ancor

engl. hooks
Pot fi suprascrise
opional de clasele
derivate
ancor

34

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

Exemplu de ancor

35

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

Suprascrierea ancorei

36

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

Principiul Hollywood

Nu ne suna tu, te sunm noi

Componentele de nivel sczut se pot ancora


n sistem, dar componentele de nivel nalt
determin cnd vor fi folosite acestea i cum

Componentele de nivel nalt apeleaz


componentele de nivel sczut i nu invers

37

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

Sortare cu Metoda Tipar


Metoda care trebuie
implementat pentru
completarea tiparului

38

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

Sortare cu Metoda Tipar

39

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

Applet-uri

Metode ancor:

init
start
stop
destroy
paint

40

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

Aplicabilitate

Cnd un algoritm este compus din pri invariabile,


care sunt tratate o singur dat, i pri variabile,
implementate de subclase

Cnd comportarea comun a mai multor subclase


poate fi extras i localizat pentru evitarea
duplicrii codului

Cnd sunt necesare operaii ancor (engl. hooks)

Pentru construirea platformelor (engl. frameworks)

41

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

Avantaje

Reprezint o tehnic fundamental pentru


reutilizarea codului

Structura de control respect Principiul


Hollywood: clasa printe apeleaz operaiile
unei subclase i nu invers

42

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

Discuie

Metoda Tipar utilizeaz motenirea pentru a varia pri ale unui


algoritm. Strategia utilizeaz compunerea pentru a varia ntregul
algoritm

Constructorul (engl. Builder) construiete un obiect n mai muli


pai. Metoda Tipar execut un algoritm compus din mai muli pai

Ca i Metoda Fabric, Metoda Tipar las subclasele s decid


asupra unor implementri

Ancorele sunt prezente n sistemul de operare Windows


(de exemplu funcia WndProc)

Metodele abstracte sunt obligatorii pentru clasele derivate,


metodele ancor sunt opionale
43

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

abloane de proiectare
comportamentale (II)
1. Strategia
2. 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

Gumball Machine

45

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

Abordarea 1

46

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

Abordarea 1

Numr foarte mare de instruciuni condiionale

Pentru s stri i n aciuni, trebuie n metode,


fiecare cu s teste

Aici trebuie 4 metode, fiecare cu 4 teste

Cnd se adaug noi stri, trebuie modificate


aceste teste

47

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

Abordarea 2

48

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

Exemplu: clas de stri

Clasa NoQuarterState

schimbarea strii

49

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

Tranziii de stare

50

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

Tranziii de stare

51

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

Definiie

ablonul Stare permite unui obiect s-i


modifice comportamentul cnd starea sa
intern se schimb. Obiectul va prea c i
schimb clasa

52

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

Diagrama UML

53

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

Exemple

Structur...
Gumball Machine...
Conturi...

54

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

Structur

55

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

Gumball Machine

56

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

Conturi

57

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

Aplicabilitate

Cnd comportarea unui obiect depinde de


starea sa

Cnd operaiile au instruciuni condiionale de


mari dimensiuni, cu multe pri, care depind
de starea obiectului

58

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

Avantaje i dezavantaje

Localizeaz comportarea specific de stare i


partiioneaz comportarea pentru diferite stri
Face tranziiile de stare explicite
Obiectele Stare pot fi partajate, dac nu au cmpuri

Pot exista mai multe Contexte care partajeaz Strile

Se face un compromis: creterea flexibilitii pe baza


creterii numrului de clase

Alternativa: cod monolitic cu numeroase if-uri, greu de


neles i modificat
59

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

Discuie

Dac tranziiile se fac n clasele de stri, se


creeaz dependene ntre acestea

Tranziiile fixe se recomand s fie efectuate n


Context

Tranziiile dinamice se pot face n Strile Concrete

Pentru aceasta, trebuie s existe metode de acces n


Context pentru schimbarea strii curente

60

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

Discuie

Strategia i Starea au diagrame asemntoare

Strategia este o alternativ la motenire. Starea


este o alternativ la instruciunile condiionale

Strategiile sunt de obicei specificate de la nceput


(chiar dac se pot schimba uor). Strile se schimb
dinamic prin nsi motivaia ablonului

Obiectele Stare pot fi obiecte din Categoria Musc


(engl. Flyweight)

Obiectele Stare sunt deseori obiecte Singleton


61

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

abloane de proiectare
comportamentale (II)
1. Strategia
2. 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

Exemplu

63

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

Soluie

64

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

Definiie

ablonul Interpretor definete o


reprezentare a gramaticii unui limbaj
mpreun cu un interpretor care utilizeaz
reprezentarea pentru a interpreta propoziiile
din limbaj

65

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

Diagrama UML

66

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

Exemple

Structur...
Cifre romane...
Rapoarte...

67

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

Structur

68

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

Cifre romane

69

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

Rapoarte

Multe clase!
70

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

Rapoarte

Reprezentare mai concis


(doar numele claselor i
relaiile dintre ele)
71

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

Aplicabilitate

Cnd trebuie interpretat un limbaj iar


instruciunile sale pot fi reprezentate sub
form de arbori sintactici abstraci, mai ales:

Cnd gramatica este simpl

Altfel se pot utiliza generatoare de parsere


(de exemplu Lex, Yacc++, Visual BNF etc.)

Cnd eficiena nu este un factor critic

Expresiile regulate sunt de obicei transformate n stri

72

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

Aplicaii n lumea real

Parsarea comenzilor utilizatorului

Programe precum Mathematica, Maple (calcul


simbolic) i Origin (desenare de grafuri)

Generatoare de rapoarte

ntruct interfaa cu utilizatorul este de obicei mai


simpl dect limbajul SQL, se pot defini limbaje de
interogare mai simple, interpretate i traduse apoi n
SQL

73

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

Avantaje i dezavantaje

Modificarea i extinderea gramaticii sunt uor de realizat

Implementarea unei gramatici simple este uor de fcut

Generarea claselor poate fi automatizat

Gramaticile complexe sunt greu de ntreinut

Se poate folosi i motenirea pentru extindere

Interpretorul necesit cte o clas pentru fiecare regul


gramatical

Adugarea unei ci noi de interpretare a expresiilor este


dificil

De exemplu verificarea tipurilor ntr-o expresie prin definirea unei


noi operaii asupra claselor expresiei
74

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

Discuie

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

75

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

abloane de proiectare
comportamentale (II)
1. Strategia
2. 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

Definiie

ablonul Vizitator reprezint o operaie care


va fi efectuat pe elementele unei structuri de
obiecte, permind definirea unei operaii noi
fr a schimba clasele elementelor pe care
opereaz

77

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

Exemplu: clasele Element

78

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

Exemplu: clasele Visitor

79

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

Exemplu: structura de obiecte


i clientul

80

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

Diagrama UML

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

81

Exemple

Structur...
Angajai...
Zile libere...

82

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

Structur

83

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

Angajai

84

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

Zile libere

85

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

Aplicabilitate

Cnd o structur de obiecte conine multe clase cu interfee


diferite

Cnd pe obiectele dintr-o structur trebuie efectuate mai


multe operaii nenrudite

Nu se polueaz clasele cu aceste operaii

Cnd se definesc des noi operaii pe structur, dar clasele


structurii nu se modific des

Dac o clas nu are metoda Accept, se poate deriva pentru a


o aduga

ablonul este util cnd nu se pot modifica sursele unor biblioteci


sau platforme pentru adugarea unor noi funcii
86

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

Avantaje

Faciliteaz adugarea de operaii noi

Grupeaz operaiile nrudite i le separ pe cele nenrudite

Vizitatorul poate vizita obiecte care nu au o clas printe


comun, spre deosebire de Iterator

Se pot apela metode diferite n Vizitator n funcie de tipul


obiectului vizitat

Alternativa ar fi testarea tipului obiectului

Poate acumula starea pe msur ce viziteaz obiectele

Pot exista mai muli vizitatori ntr-un sistem

Apelul bidirecional Accept Visit permite adugarea mai


multor operaii la vizitare
87

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

Dezavantaje

Adugarea de noi clase ConcreteElement este dificil

Poate reduce ncapsularea, oblignd obiectele vizitate


s-i expun starea intern

ablonul nu este recomandat n timpul dezvoltrii unui sistem,


cnd numrul de clase crete sau clasele se modific mult

Vizitatorul nu poate accesa cmpurile private, deci trebuie s


existe metode publice de acces n obiectele vizitate

Anti-ablonul de proiectare Anemic domain model: logica


programului este implementat n afara obiectelor din
domeniu
88

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

Discuie

Vizitatorul poate fi utilizat la aplicarea unei operaii


pe o structur Compus (engl. Composite)

Pentru vizitarea fiecrui element al unei colecii


se poate folosi Iteratorul acesteia

Vizitatorul poate fi utilizat pentru a pstra


ntr-o singur clas comportarea fiecrui nod
din arborele sintactic al unui Interpretor

89

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

abloane de proiectare
comportamentale (II)
1. Strategia
2. 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

Concluzii (PC II)

Strategia definete o familie de algoritmi, ncapsuleaz fiecare


algoritm i i face interschimbabili
Metoda Tipar definete scheletul unui algoritm dintr-o operaie,
transfernd unii pai ctre subclase
Starea permite unui obiect s-i modifice comportamentul cnd
starea sa intern se schimb
Interpretorul definete o reprezentare a gramaticii unui limbaj
mpreun cu un interpretor care utilizeaz reprezentarea pentru a
interpreta propoziiile din limbaj
Vizitatorul reprezint o operaie care va fi efectuat pe
elementele unei structuri de obiecte, permind definirea unei
operaii noi fr a schimba clasele elementelor pe care opereaz
91

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

abloanele de proiectare (I)

Cunoaterea fundamentelor programrii orientate pe obiecte


nu implic automat abiliti de proiectare orientat pe obiecte

Proiectele orientate pe obiecte de succes sunt uor de


reutilizat, extins i ntreinut

abloanele de proiectare recomand o serie de modaliti de


a proiecta astfel de sisteme

abloanele sunt la un nivel mai nalt de abstractizare dect


bibliotecile de funcii

abloanele nu au fost inventate, au fost descoperite


rezolvnd probleme reale

Reflect experiena unor proiectani


92

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

abloanele de proiectare (II)

Cnd sunt folosite corect, abloanele de proiectare


pot face un sistem mai flexibil i mai uor de
ntreinut

Cnd sunt folosite fr a fi nevoie, ele cresc inutil


complexitatea sistemului

Cunoaterea abloanelor de proiectare are


avantajul folosirii unui vocabular comun, ceea ce
permite exprimarea mai succint a ideilor de
proiectare
93

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

abloane de proiectare
comportamentale (II)
1. Strategia
2. 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

Recapitulare

abloane creaionale
1.
2.
3.
4.
5.

Metoda Fabric
Fabrica Abstract
Singleton
Prototipul
Constructorul

95

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

Metoda Fabric

ablonul Metoda
Fabric definete o
interfa pentru crearea
unui obiect, dar las
subclasele s decid ce
clas s instanieze.
ablonul permite unei
clase s cedeze
subclaselor instanierea
de obiecte
96

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

Fabrica Abstract

ablonul Fabrica
Abstract asigur o
interfa pentru crearea
unor familii de obiecte
nrudite sau
dependente fr a le
specifica clasele
concrete

97

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

Singleton

ablonul Singleton
asigur faptul c o
clas are o singur
instan i ofer un
punct global de acces
la aceasta

98

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

Prototip

ablonul Prototip
precizeaz, folosind o
instan prototip, tipurile
de obiecte ce vor fi
create i creeaz noile
obiecte copiind acest
prototip

99

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

Constructor

ablonul Constructor
separ construcia unui
obiect complex de
reprezentarea acestuia,
astfel nct acelai
proces de construcie
s poat crea
reprezentri diferite

100

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

Recapitulare

abloane structurale
1.
2.
3.
4.
5.
6.
7.

Adaptorul
Faada
Decoratorul
Puntea
Delegarea
Categoria Musc
Compunerea
101

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

Adaptorul

ablonul Adaptor
convertete interfaa
unei clase n alt
interfa pe care o
ateapt clientul.
Adaptorul permite s
funcioneze mpreun
clase care altfel nu ar
putea din cauza
interfeelor
incompatibile
102

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

Faada

ablonul Faad
asigur o interfa
unificat la o mulime
de interfee dintr-un
subsistem. Faada
definete o interfa de
nivel mai nalt care face
subsistemul mai uor
de utilizat

103

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

Decoratorul

ablonul Decorator
ataeaz
responsabiliti
suplimentare unui
obiect n mod dinamic.
Decoratorii asigur o
alternativ flexibil la
derivare pentru
extinderea
funcionalitii
104

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

Puntea

ablonul Punte
decupleaz o
abstraciune de
implementarea ei,
astfel nct cele dou
s poat varia n mod
independent

105

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

Proxy

ablonul Proxy asigur


un surogat sau un
nlocuitor pentru alt
obiect pentru a controla
accesul la acesta

106

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

Categoria Musc

ablonul Categoria
Musc folosete
partajarea pentru a
gestiona eficient un
numr mare de obiecte
de dimensiuni mici

107

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

Compunerea

ablonul Compunere
compune obiecte n
structuri de tip arbore
pentru a reprezenta
ierarhii parte-ntreg.
ablonul permite
clienilor s trateze
uniform obiecte
individuale i
compuneri de obiecte
108

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

Recapitulare

abloane comportamentale
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

Iteratorul
Observatorul
Comanda
Lanul Responsabilitilor
Mediatorul
Memento
Strategia
Metoda Tipar
Starea
Interpretorul
Vizitatorul
109

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

Iteratorul

ablonul Iterator
asigur o cale de
accesare secvenial a
elementelor unui obiect
agregat, fr a expune
reprezentarea lui de
baz

110

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

Observatorul

ablonul Observator
definete o dependen
1 la N ntre obiecte,
astfel nct n cazul n
care un obiect i
schimb starea, vor fi
ntiinate i actualizate
automat toate obiectele
sale dependente

111

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

Comanda

ablonul Comand
ncapsuleaz o cerere
ca obiect, permind
parametrizarea
clienilor cu diferite
cereri, formarea unei
cozi de cereri sau
stocarea istoricului
acestora i asigurarea
suportului pentru
anularea operaiilor
112

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

Lanul Responsabilitilor

ablonul Lanul
Responsabilitilor evit
cuplarea ntre expeditorul i
destinatarul unei cereri,
acordnd mai multor
obiecte o ans de a
rezolva cererea. ablonul
nlnuie obiectele
destinatar i trece cererea
de-a lungul lanului pn
cnd un obiect o rezolv

113

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

Mediatorul

ablonul Mediator definete


un obiect care ncapsuleaz
modul n care
interacioneaz o mulime
de obiecte. Acest ablon
promoveaz cuplarea
slab, interzicnd obiectelor
s fac referine explicite
unul la cellalt i permite
modificarea independent a
interaciunilor

114

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

Memento

ablonul Memento
captureaz i
exteriorizeaz starea
intern a unui obiect
fr a viola
ncapsularea, astfel
nct obiectul s poat
fi readus ulterior la
respectiva stare

115

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

Strategia

ablonul Strategie
definete o familie de
algoritmi, ncapsuleaz
fiecare algoritm i i
face interschimbabili.
Acest ablon permite
algoritmului s varieze
independent de clienii
care l utilizeaz

116

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

Metoda Tipar

ablonul Metoda Tipar


definete scheletul unui
algoritm dintr-o
operaie, transfernd
unii pai ctre
subclase. ablonul
permite subclaselor s
redefineasc anumii
pai dintr-un algoritm
fr a schimba
structura acestuia
117

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

Starea

ablonul Stare
permite unui obiect
s-i modifice
comportamentul cnd
starea sa intern se
schimb. Obiectul va
prea c i schimb
clasa

118

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

Interpretorul

ablonul Interpretor
definete o reprezentare
a gramaticii unui limbaj
mpreun cu un
interpretor care utilizeaz
reprezentarea pentru a
interpreta propoziiile din
limbaj

119

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

Vizitatorul

ablonul Vizitator
reprezint o operaie
care va fi efectuat pe
elementele unei
structuri de obiecte,
permind definirea
unei operaii noi fr a
schimba clasele
elementelor pe care
opereaz
120

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

S-ar putea să vă placă și