SabLoane
-
Upload
sergiu-panico -
Category
Documents
-
view
214 -
download
0
Transcript of SabLoane
-
8/13/2019 SabLoane
1/78
-
8/13/2019 SabLoane
2/78
abloane de proiectarestructurale (I)
1. Adaptorul2. Faada3. Principiul Cunoaterii Minime4. Decoratorul
5. Principiul Deschis-nchis6. Puntea7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
3/78
3
Terminologie
Adapter = Adaptor Faade = Faad Decorator Bridge = Punte
The Principle of Least Knowledge =
Principiul Cunoaterii Minime The Open-Closed Principle =
Principiul Deschis-nchis
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
4/78
Not
Programele care implementeaz abloaneledescrise i care pot fi descrcate din paginacursului sunt parte integrant a prezentrii
4Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
5/78
abloane de proiectarestructurale (I)
1. Adaptorul2. Faada3. Principiul Cunoaterii Minime4. Decoratorul
5. Principiul Deschis-nchis6. Puntea7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
6/78
6
Adaptoare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
7/78
7
Adaptoare OO
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
8/78
8
Adaptoare OO
Cod neschimbat Cod neschimbat
Cod nou
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
9/78
9
Exemplul 1
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
10/78
10
Adaptorul TurkeyToDuck
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
11/78
-
8/13/2019 SabLoane
12/78
12
Diagrama UML
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
13/78
13
Definiie
ablonulAdaptorconvertete interfaa uneiclase n alt interfa pe care o ateaptclientul.Adaptorulpermite s funcionezempreun clase care altfel nu ar putea dincauza interfeelor incompatibile.
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
14/78
-
8/13/2019 SabLoane
15/78
15
Comparaie
Adaptorul de obiecte este mai flexibil Poate adapta nu numai clasa Adaptee, ci i orice
clas derivat a acestuia
Adaptorul de clase este mai eficient Un singur obiect adaptor vs.
dou obiecte: un adaptor i un adaptat
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
16/78
16
Exemplul 2
Abordare mai veche Abordare mai nou
Are n plus remove()
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
17/78
-
8/13/2019 SabLoane
18/78
18
Implementare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
19/78
19
Alte exemple
Structur... Compui chimici...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
20/78
20
Compui chimici
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
21/78
-
8/13/2019 SabLoane
22/78
22
Cinema la tine-acas
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
23/78
23
Vizionarea unui film
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
24/78
24
Vizionarea unui film
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
25/78
25
Faada
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
26/78
26
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
27/78
27
Implementare
Constructor... WatchMovie... EndMovie...
Adugarea unor funcii noi: ListenToCd...
EndCd... ListenToRadio... EndRadio...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
28/78
28
Definiie
ablonul Faadasigur o interfa unificatla o mulime de interfee dintr-un subsistem.Faadadefinete o interfa de nivel mai nalt
care face subsistemul mai uor de utilizat.
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
29/78
-
8/13/2019 SabLoane
30/78
30
Alte exemple
Structur... Credite ipotecare...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
31/78
Structur
31
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
32/78
32
Credite ipotecare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
33/78
-
8/13/2019 SabLoane
34/78
abloane de proiectarestructurale (I)
1. Adaptorul2. Faada3. Principiul Cunoaterii Minime4. Decoratorul
5. Principiul Deschis-nchis6. Puntea7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
35/78
35
Principiul Cunoaterii Minime
Vorbete numai cu prietenii imediai
Se recomand apelul metodelor numai din: Obiectul nsui
Cmpurile obiectului Obiectele primite ca parametri n metode Obiectele instaniate n metode
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
36/78
36
Principiul Cunoaterii Minime
Nu se recomand apelul metodelor dinobiectele returnate de alte metode
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
37/78
-
8/13/2019 SabLoane
38/78
38
Faada i PCM
Clientul are o singurdependen(prieten imediat):faada
Dac subsistemul este prea complex i nu respectPCM, se pot defini faade suplimentare pentruniveluri succesive din subsistem
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
39/78
-
8/13/2019 SabLoane
40/78
-
8/13/2019 SabLoane
41/78
41
Tipuri de cafea i condimente
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
42/78
-
8/13/2019 SabLoane
43/78
43
Abordarea 1
Dac se adaug sau seelimin unele condimente?
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
44/78
-
8/13/2019 SabLoane
45/78
45
Decorarea unui obiect
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
46/78
46
Apelul metodei
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
47/78
47
Definiie
ablonul Decoratorataeaz responsabilitisuplimentare unui obiect n mod dinamic.Decoratoriiasigur o alternativ flexibil la
derivare pentru extinderea funcionalitii.
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
48/78
48
Diagrama UML
derivareaeste folosit pentrurespectarea interfeei
compunereaeste folositpentru apelul metodei
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
49/78
49
Abordarea 2: decorarea
Componentaabstract
Componenteleconcrete
Decoratorii concrei
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
50/78
50
Clasele abstracte
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
51/78
51
Clasele concrete
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
52/78
52
Utilizare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
53/78
53
Alte exemple
Structur... mprumuturi la bibliotec...
Butoane decorate...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
54/78
54
Structur
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
55/78
55
mprumuturi la bibliotec
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
56/78
-
8/13/2019 SabLoane
57/78
57
Discuie (I)
Decoratoriiau acelai tip ca i obiectele decorate Putem trimite ca parametru un obiect decorat n locul
obiectului iniial
Decoratorulfolosete motenirea pentru a prelua tipulobiectului decorat i compunerea pentru a-i schimbacomportamentul
Se pot utiliza unul sau mai muli decoratoripentru un obiect Obiectele pot fi decorate dinamic n momentul execuiei Decoratoruli poate aduga propriul comportament nainte
sau dup delegare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
58/78
-
8/13/2019 SabLoane
59/78
abloane de proiectarestructurale (I)
1. Adaptorul2. Faada3. Principiul Cunoaterii Minime4. Decoratorul
5. Principiul Deschis-nchis6. Puntea7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
60/78
60
Motivaie (I)
Toate telecomenzile auaceeai abstractizare
Exist foarte multeimplementri, cte unapentru fiecare tip detelevizor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
61/78
61
Motivaie (II)
Problem: pe lngschimbrile dinimplementri, vor
exista i schimbri nabstractizare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
62/78
-
8/13/2019 SabLoane
63/78
63
Motivaie (IV)
Cnd o abstraciune poate avea mai multe implementri,se utilizeaz motenirea pentru acestea
ns motenirea leag o implementare de o abstraciunen mod permanent, deci este dificil s se modifice, s seexind i s se reutilizeze n mod independentabstraciunea i implementrile
De exemplu: nu este convenabil extinderea abstraciuniipentru a acoperi diferite tipuri de ferestre sau platforme
(abstraciunea Window) Motenirea fr o Punteface codul client dependent de
platform
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
64/78
64
Telecomanda: soluie
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
65/78
65
Ferestre: soluie
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
66/78
66
Discuie
Abstraciunea Windowi implementarea ei sunt pusen ierarhii de clase separate Exist o ierarhie de clase pentru interfeele de ferestre i
o ierarhie separat pentru implementrile specifice aleferestrelor cu rdcina WindowImp
Toate operaiile asupra subclaselor Windowsuntimplementate n termeni de operaii abstracte dininterfaa WindowImp
Se decupleaz abstraciunea fereastr de diferiteleimplementri specifice platformelor
Relaia dintre WindowiWindowImpeste o Punte
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Alt exemplu: planificarea
-
8/13/2019 SabLoane
67/78
67
Alt exemplu: planificareafirelor de execuie
Se mai adaug oplatform cuplanificatori aifirelor de execuie
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
68/78
68
Soluie folosind Puntea
Varianta iniial
Varianta folosind Puntea
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
69/78
69
Definiie
ablonul Puntedecupleaz o abstraciune deimplementarea ei, astfel nct cele dou spoat varia n mod independent
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
70/78
70
Diagrama UML
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
71/78
71
Alte exemple
Structur... Clieni de afaceri... Vizualizri de produse...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
72/78
72
Structur
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
73/78
-
8/13/2019 SabLoane
74/78
74
Vizualizri de produse
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
75/78
75
Exemple din viaa real
Windows ablonul Puntepermite unui proiectant s furnizeze o
interfa simpl pentru abstraciune i o interfa puternici complex pentru implementare
Win32APIeste interfaa abstraciunii Limbajul de nucleu (engl. kernel) este interfaa
implementrii
Platforma .NET CIL,C#,Visual Basic,Managed C++sunt abstraciuni MSILeste o implementare
MonoidotGnusunt alte implementri
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
76/78
76
Avantaje i dezavantaje
Evitarea legrii clienilor de o implementare;schimbrile de implementare nu afecteaz clientul
Detaliile de implementare sunt ascunse clientului
Potrivit pentru dezvoltarea pentru platforme diferite Abstraciunile i implementrile pot fi selectate n
momentul execuiei
Separarea abstraciunii de implementare cretecomplexitatea
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
77/78
77
Discuie
ablonul Puntedescompune interfaa i implementarea uneicomponente n ierarhii de clase independente
Clasa de interfa conine o referin la clasa de implementareabstract, referin care este iniializat cu o instan a clasei de
implementare concret, dar toate interaciunile ulterioare de la clasade interfa spre clasa de implementare se limiteaz laabstraciunea din clasa de baz de implementare
Clientul interacioneaz cu clasa de interfa iar cererile suntdelegate ctre clasa de implementare
Obiectul de interfa este punctul de contact cunoscut i utilizat dectre client iar obiectul de implementare este corpul ncapsulatpentru a-i permite s evolueze sau s fie chiar schimbat complet
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 SabLoane
78/78