ingineria programarii: sabloane de proiectare comportamentale 1

Upload: enrollinfo

Post on 04-Jun-2018

254 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    1/89

    Ingineria programrii

    9. abloane de proiectarecomportamentale (Ib)

    Florin LeonUniversitatea TehnicGheorghe Asachi din IaiFacultatea de Automatici Calculatoare

    http://florinleon.byethost24.com/curs_ip.htm

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    2/89

    abloane de proiectarecomportamentale (Ib)

    1. Observatorul2. Comanda

    3. Lanul Responsabilitilor4. Mediatorul

    5. Memento

    6. Concluzii

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    3/89

    3

    Terminologie

    Observer = Observator

    Command = Comand

    Chain of Responsibility = Lanul Responsabilitilor

    Mediator

    Memento

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    4/89

    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 Ingineria programarii: Sabloane de proiectare comportamentale 1

    5/89

    abloane de proiectarecomportamentale (Ib)

    1. Observatorul2. Comanda

    3. Lanul Responsabilitilor4. Mediatorul

    5. Memento

    6. Concluzii

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    6/89

    6

    Staia meteorologic

    Exist maimulte tipuri de

    afiareApelat automatcnd valorile se

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    7/89

    7

    Abordarea 1

    citete ultimele valori

    actualizeazafirile

    Modificri?

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    8/89

    8

    ablonul Observator

    Analogie

    Abonaii unui ziar

    Ct timp sunt abonai, ei primesc ziarul

    Pot renuna la abonament

    Ziarul primete continuu cereri de abonare idezabonare

    Ziarele sunt trimise doar celor abonai

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    9/89

    9

    Definiie

    ablonul Observatordefinete o dependen1 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

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    10/89

    10

    Diagrama de clase

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    11/89

    11

    Diagrama de secvene

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    12/89

    12

    Cuplarea slab

    Obiectele care interacioneaz au puine cunotineunul despre altul

    Interdependena dintre obiecte este minimizat

    n ablonul Observator Subiectul este singurul proprietar al datelor caracteristice

    ablonului

    Subiectul tie doar c observatorii implementeaz o interfa

    (Update) Se pot aduga oricnd noi observatori

    Se pot aduga noi tipuri de observatori

    Schimbrile din subiect nu afecteaz observatorii i viceversa

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    13/89

    13

    Protocoale specifice

    Modelul de extragere (engl. pull) Subiectul trimite doar o notificare minimal iar

    apoi observatorii cer n mod explicit detalii

    Update(void)+ proprieti saumetode get accesatede observatori

    Modelul de mpingere (engl. push)

    Subiectul trimite informaii detaliate despreschimbare, indiferent dac observatorii au nevoiesau nu de toate informaiile Update(informaii)

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    14/89

    14

    Diagrama aplicaiei

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    15/89

    15

    Interfeele

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    16/89

    16

    Alte clase

    WeatherData : ISubject

    CurrentConditionsDisplay : IObserver, IDisplayElement

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    17/89

    17

    Alte exemple

    Structur...

    Stocks...

    Culori...

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    18/89

    Structur

    18

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    19/89

    Stocks

    19

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    20/89

    Culori

    20

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    21/89

    Discuie

    Viteza crete dac subiecii au referine laobservatori. Dac ns muli subieci nu auobservatori, utilizarea memoriei este ineficient.

    Se poate folosi o tabel global de perechi(Subiect, Observator)

    Fiecare observator poate specifica aspectele de

    care este interesat i va primi notificri i date doarn legatur cu aceste aspecte

    21

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    22/89

    Discuie

    Pot exista multe obiecte simultan subieci iobservatori

    Pentru evitarea dependenelor circulare, fiecare

    notificare are o etichet temporal (timestamp) Notificrile care sunt rezultate ale altor notificri

    au aceeai etichet

    Dac un observator primete o notificare cu aceeai

    etichet ca notificarea trimisde el ca subiect, nu maicontinu propagarea

    Niciun obiect nu trimite dou notificri separate cuaceeai etichet temporal

    22

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    23/89

    23

    Discuie

    n abordarea GoF, dac relaia dintre subieci iobservatori este foarte complex, poate exista un obiectintermediar ChangeManagercare s gestioneze acesteinteraciuni

    Cnd exist mai muli subieci interdependeni,observatorii trebuie notificai o singur dat dup cetoi

    subiecii au finalizat modificrile

    Obiectul ChangeManagereste un observator pentru cprimete notificri asupra schimbrilor i un subiectpentru c notific observatorii

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    24/89

    24

    Change Manager

    DAG = Directed Acyclic Graph

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    25/89

    25

    Aplicabilitate

    ablonul se folosete cnd un obiect trebuies reacioneze la schimbrile din alt obiect iarobiectele trebuie s fie slab cuplate Evenimentele componentelor interfeei cu

    utilizatorul

    Evenimente acionate de timp: momente

    predeterminate, timere, triggere n baze de date Model-View-Controller: ntre model i vizualizri

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    26/89

    abloane de proiectarecomportamentale (Ib)

    1. Observatorul2. Comanda

    3. Lanul Responsabilitilor4. Mediatorul

    5. Memento

    6. Concluzii

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    27/89

    27

    Telecomanda universal

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    28/89

    28

    Obiectul de comand

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    29/89

    29

    Exemplu de utilizare

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    30/89

    30

    Paii de execuie

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    31/89

    31

    Definiie

    ablonul Comandncapsuleaz o cerere caobiect, permind: parametrizarea clienilor cu diferite cereri(trimiterea

    ca parametru a unei funcii ncapsulate ntr-un obiect) formarea unei cozi de cereri sau stocarea istoricului

    acestora (engl. logging)

    asigurarea suportului pentru anularea operaiilor

    (engl. undo)

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    32/89

    32

    Diagrama de clase

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    33/89

    33

    Diagrama de secvene

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    34/89

    34

    Atribuirea comenzilor

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    35/89

    35

    Implementare

    Obiect nul:

    elimin necesitateaunui test pentru null

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    36/89

    36

    Implementare

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    37/89

    37

    Anularea (undo)

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    38/89

    38

    Implementare

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    39/89

    39

    Folosirea strii pentru anulare

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    40/89

    40

    Comenzi macro

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    41/89

    41

    Construirea macro-ului

    Party Mode

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    42/89

    42

    Alte exemple

    Structur...

    Calculator...

    Comenzi de anulare...

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    43/89

    Structur

    43

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    44/89

    Calculator

    44

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    45/89

    Comenzi de anulare

    45

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    46/89

    46

    Alte utilizri

    Formarea unei cozi de cereri

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    47/89

    47

    Alte utilizri

    Stocarea istoricului cererilor (engl. logging)

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    48/89

    48

    Aplicabilitate

    Cnd este necesar delegarea rspunsului laevenimente al unui client de la o clas de invocarela alt clas ce ncapsuleaz reacia

    Cnd trebuie diminuat cuplarea ntre clieni iobiectele receiver

    Pentru ncapsularea codului de tratare a

    evenimentelor, de exemplu evenimentele .NET button.Click += new System.EventHandler(button_Click);

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    49/89

    49

    Discuie

    Pentru pstrarea mai multor operaii de anulare,se poate folosi o stiv de comenzi

    Pentru implementarea unei comenzi macro, se

    poate folosi o Compunere(engl. Composite)

    n cazul n care o comand trebuie copiatpentru introducerea n lista cronologic, se

    poate folosi Prototipul

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    50/89

    abloane de proiectarecomportamentale (Ib)

    1. Observatorul2. Comanda

    3. Lanul Responsabilitilor4. Mediatorul

    5. Memento

    6. Concluzii

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    51/89

    51

    Exemplu

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    52/89

    52

    Definiie

    ablonul Lanul responsabilitilor evitcuplarea ntre expeditorul i destinatarul uneicereri, acordnd mai multor obiecte o ans de

    a rezolva cererea. ablonul nlnuie obiecteledestinatar i trece cererea de-a lungul lanuluipn cnd un obiect o rezolv

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    53/89

    53

    Diagrama de clase

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    54/89

    54

    Diagrama de secvene

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    55/89

    55

    Exemple

    Structur...

    Cereri de cumprare...

    Imagini, fiiere i culori...

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    56/89

    Structur

    56

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    57/89

    Cereri de cumprare

    57

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    58/89

    Imagini, fiiere i culori

    58

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    59/89

    59

    Aplicabilitate

    Cnd cererea poate fi rezolvat de mai multeobiecte iar obiectul care o va rezolva nu este

    cunoscut a priori

    Obiectul care rezolv cererea este stabilit dinamic Cnd trebuie generat o cerere ctre unul sau mai

    multe obiecte, fr a preciza n mod explicitdestinatarul

    Cnd mulimea de obiecte care pot rezolva o cereretrebuie construit dinamic

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    60/89

    Exemplu din lumea real

    Servlet-uri Java: doFilter

    60

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    61/89

    61

    Avantaje i dezavantaje

    Reduce cuplarea

    Expeditorul i destinatarul nu se cunosc explicit

    Un obiect nu tie structura lanului

    Crete flexibilitatea Noi responsabiliti pot fi adugate sau unele pot fi eliminate

    prin modificarea structurii lanului

    Recepia nu este garantat O cerere poate rmne nerezolvat dac ajunge la sfritul

    lanului (dac niciun obiect nu o poate rezolva sau dac lanulnu este corect configurat)

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    62/89

    62

    Discuie

    Lanul Responsabilitilorpoate fi aplicatn conjuncie cu ablonul Compunere(engl. Composite)

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    63/89

    abloane de proiectarecomportamentale (Ib)

    1. Observatorul2. Comanda

    3. Lanul Responsabilitilor4. Mediatorul

    5. Memento

    6. Concluzii

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    64/89

    64

    Exemplu

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    65/89

    65

    Soluie

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    66/89

    66

    Definiie

    ablonul Mediator definete un obiect carencapsuleaz modul n care interacioneazo mulime de obiecte. Acest ablon promoveaz

    cuplarea slab, interzicnd obiectelor s facreferine explicite unul la cellalt i permitemodificarea independent a interaciunilor

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    67/89

    67

    Diagrama de clase

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    68/89

    68

    Diagrama de secvene

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    69/89

    69

    Exemple

    Structur...

    Camera de chat...

    Liste...

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    70/89

    Structur

    70

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    71/89

    Camera de chat

    71

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    72/89

    Liste

    72

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    73/89

    73

    Aplicabilitate

    Cnd o mulime de obiecte comunic pe cibine definite dar complexe

    Interdependenele rezultate nu sunt structurate i

    sunt dificil de neles Cnd este dificil reutilizarea unui obiect

    deoarece el refer i comunic cu mai multealte obiecte

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    74/89

    Exemplu din lumea real

    System.Windows.Forms.Formn .NET

    Un formular are multe controale care nu tiu unul deexistena celorlalte

    De exemplu: cnd utilizatorul alege un element dintr-unListBox, se afieaz un mesaj ntr-un TextBox i seactiveaz un GroupBox

    ListBox-ul, TextBox-ul i GroupBox-ul nu comunic

    direct, ci prin intermediul Form-ului

    74

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    75/89

    75

    Avantaje i dezavantaje

    Decupleaz colegii

    Simplific protocoalele de comunicare ntreobiecte

    Abstractizeaz modul de cooperare dintre obiecte

    Centralizeaz controlul

    God object

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    76/89

    76

    Discuie

    Faadaabstractizeaz un subsistem n modunidirecional. Mediatorulpermite colaborareaobiectelor i acioneaz multidirecional

    Colegiipot s comunice cu mediatorulfolosindablonul Observator

    Obiectul ChangeManager din ablonul

    Observator este un Mediator i poate fiSingleton

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    77/89

    abloane de proiectarecomportamentale (Ib)

    1. Observatorul2. Comanda

    3. Lanul Responsabilitilor4. Mediatorul

    5. Memento

    6. Concluzii

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    78/89

    78

    Exemplu

    Salvarea strii unui joc

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    79/89

    79

    Definiie

    ablonul Memento captureaz i exteriorizeazstarea intern a unui obiect fr a viola

    ncapsularea, astfel nct obiectul s poat fi

    readus ulterior la respectiva stare

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    80/89

    80

    Diagrama de clase

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    81/89

    81

    Diagrama de secvene

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    82/89

    82

    Exemple

    Structur...

    Vnzri...

    Dreptunghiuri...

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    83/89

    Structur

    83

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    84/89

    Vnzri

    84

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    85/89

    Dreptunghiuri

    85

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    86/89

    86

    Aplicabilitate

    Cnd trebuie salvat un instantaneu al strii unuiobiect (sau al unei poriuni din stare), astfel nctacesta s poat fi readus ulterior la acea stare

    Cnd o interfa direct pentru obinerea striiar expune detaliile implementrii i ar viola

    ncapsularea obiectului

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    87/89

    87

    Avantaje i dezavantaje

    Pstreaz limitele ncapsulrii

    Simplific obiectul Originator Obiectul nu mai trebuie s rein el nsui istoricul

    strilor

    Utilizarea Memento-urilor poate fi costisitoare

    Copierea unui volum mare de date

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    88/89

    88

    Discuie

    O Comandpoate utiliza obiecte Mementopentru operaiile de anulare (engl. undo)

    Obiectele Mementopot fi manipulate cu

    ajutorul unui Iterator

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

  • 8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1

    89/89

    Concluzii

    Observatorulpermite ca un obiect s notifice alte obiecteatunci cnd se produc modificri n starea sa intern

    Comandaeste un obiect-funcie care ncapsuleazapelul unei metode din alt obiect

    Lanul Responsabilitilorncearc rezolvarea unei cerericu ajutorul unui numr necunoscut n mod explicit deobiecte

    Mediatorulncapsuleaz protocolul de comunicare alobiectelor

    Mementoreprezint starea intern a unui obiect la unanumit moment de timp