SabLoane

download SabLoane

of 78

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