Documente Academic
Documente Profesional
Documente Cultură
Terminologie
Adapter = Adaptor Faade = Faad Decorator Bridge = Punte The Principle of Least Knowledge = Principiul Cunoaterii Minime The Open-Closed Principle = Principiul Deschis-nchis
3
Not
Programele care implementeaz abloanele descrise i care pot fi descrcate din pagina cursului sunt parte integrant a prezentrii
Adaptoare
Adaptoare OO
Adaptoare OO
Cod neschimbat
Exemplul 1
Adaptorul
TurkeyToDuck
10
Utilizare
11
Diagrama UML
12
Definiie
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.
13
Adaptorul de obiecte
Adaptorul de clase
14
Comparaie
Poate adapta nu numai clasa Adaptee, ci i orice clas derivat a acestuia Un singur obiect adaptor vs. dou obiecte: un adaptor i un adaptat
15
Exemplul 2
16
Exemplul 2
17
Implementare
18
Alte exemple
19
Compui chimici
20
Cinema la tine-acas
22
23
24
Faada
25
26
Implementare
Definiie
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.
28
Diagrama UML
29
Alte exemple
30
Structur
31
Credite ipotecare
32
Discuie
Att Faada ct i Adaptorul pot mpacheta (pot fi wrappere pentru) una sau mai multe clase
Scopul Adaptorului este s converteasc interfaa Scopul Faadei este s simplifice interfaa
33
Obiectul nsui Cmpurile obiectului Obiectele primite ca parametri n metode Obiectele instaniate n metode
35
36
Apeluri admise
37
Faada i PCM
Dac subsistemul este prea complex i nu respect PCM, se pot defini faade suplimentare pentru niveluri succesive din subsistem
38
Starbuzz Coffee
40
41
Abordarea 1
valori bool pentru fiecare condiment cost() nu mai este abstract, ci virtual Calculeaz costurile determinate de condimente
42
Abordarea 1
43
Principiul Deschis-nchis
Clasele trebuie s fie deschise pentru extindere dar nchise pentru modificri Utilizarea principiului introduce de obicei noi niveluri de abstractizare, care cresc complexitatea codului
Compromis: aplicarea n seciunile cu stabilitate redus (unde probabilitatea de modificare este ridicat)
44
45
Apelul metodei
46
Definiie
ablonul Decorator ataeaz responsabiliti suplimentare unui obiect n mod dinamic. Decoratorii asigur o alternativ flexibil la derivare pentru extinderea funcionalitii.
47
Diagrama UML
derivarea este folosit pentru respectarea interfeei
compunerea este folosit pentru apelul metodei
48
Abordarea 2: decorarea
Componenta abstract
Clasele abstracte
50
Clasele concrete
51
Utilizare
52
Alte exemple
53
Structur
54
mprumuturi la bibliotec
55
Butoane decorate
56
Discuie (I)
Decoratorul folosete motenirea pentru a prelua tipul obiectului decorat i compunerea pentru a-i schimba comportamentul Se pot utiliza unul sau mai muli decoratori pentru un obiect Obiectele pot fi decorate dinamic n momentul execuiei Decoratorul i poate aduga propriul comportament nainte sau dup delegare
57
Discuie (II)
Adaptorul permite utilizarea unor clase fr a modifica nici codul client nici codul int; Decoratorul permite adugarea de noi funcionaliti fr modificri n cod
58
Motivaie (I)
Toate telecomenzile au aceeai abstractizare Exist foarte multe implementri, cte una pentru fiecare tip de televizor
60
Motivaie (II)
61
Motivaie (III)
62
Motivaie (IV)
Cnd o abstraciune poate avea mai multe implementri, se utilizeaz motenirea pentru acestea
ns motenirea leag o implementare de o abstraciune n mod permanent, deci este dificil s se modifice, s se exind i s se reutilizeze n mod independent abstraciunea i implementrile De exemplu: nu este convenabil extinderea abstraciunii pentru a acoperi diferite tipuri de ferestre sau platforme (abstraciunea Window)
Telecomanda: soluie
64
Ferestre: soluie
65
Discuie
Exist o ierarhie de clase pentru interfeele de ferestre i o ierarhie separat pentru implementrile specifice ale ferestrelor cu rdcina WindowImp
Toate operaiile asupra subclaselor Window sunt implementate n termeni de operaii abstracte din interfaa WindowImp Se decupleaz abstraciunea fereastr de diferitele implementri specifice platformelor Relaia dintre Window i WindowImp este o Punte
66
67
Varianta iniial
Definiie
ablonul Punte decupleaz o abstraciune de implementarea ei, astfel nct cele dou s poat varia n mod independent
69
Diagrama UML
70
Alte exemple
71
Structur
72
Clieni de afaceri
73
Vizualizri de produse
74
Windows
ablonul Punte permite unui proiectant s furnizeze o interfa simpl pentru abstraciune i o interfa puternic i complex pentru implementare Win32API este interfaa abstraciunii Limbajul de nucleu (engl. kernel) este interfaa implementrii CIL, C#, Visual Basic, Managed C++ sunt abstraciuni MSIL este o implementare Mono i dotGnu sunt alte implementri
75
Platforma .NET
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 crete complexitatea
76
Discuie
ablonul Punte descompune interfaa i implementarea unei componente n ierarhii de clase independente Clasa de interfa conine o referin la clasa de implementare abstract, referin care este iniializat cu o instan a clasei de implementare concret, dar toate interaciunile ulterioare de la clasa de interfa spre clasa de implementare se limiteaz la abstraciunea din clasa de baz de implementare
Clientul interacioneaz cu clasa de interfa iar cererile sunt delegate ctre clasa de implementare
Obiectul de interfa este punctul de contact cunoscut i utilizat de ctre client iar obiectul de implementare este corpul ncapsulat pentru a-i permite s evolueze sau s fie chiar schimbat complet
77
Concluzii
ablonul Adaptor convertete interfaa unei clase n alt interfa pe care o ateapt clientul