WYKŁAD 13. Wzorce projektowe czynnociowe Chain of Responsibility Interpreter Memento



Podobne dokumenty
WYKŁAD 10. Wzorce projektowe czynnociowe Command Strategy

WYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod

WYKŁAD 12. Wzorce projektowe czynnociowe State Mediator

WYKŁAD 9. Wzorce projektowe czynnociowe Observer Visitor

Gramatyki regularne i automaty skoczone

Wprowadzenie do kompilatorów

Programowanie Obiektowe

WZORCE PROJEKTOWE STRUKTURALNE. Omówimy (W6-W8): Decorator Composite Adapter Bridge Facade Proxy

Zaawansowane programowanie obiektowe - wykład 5

Wzorce projektowe kreacyjne

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

WYKŁAD 5. Wzorce projektowe kreacyjne Builder Prototype

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

Wzorce projektowe. dr inż. Marcin Pietroo

Instrukcja obsługi programu MechKonstruktor

Sposoby przekazywania parametrów w metodach.

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo

Wprowadzenie do programowania aplikacji mobilnych

Program Sprzeda wersja 2011 Korekty rabatowe

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

problem w określonym kontekście siły istotę jego rozwiązania

Studium przypadku Case Study CCNA2-ROUTING

Klonowanie MAC adresu oraz TTL

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Syntactic Pattern Recognition. Anna Kuchna Maciej arnowski

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Testowanie oprogramowania Wzorce projektowe

Zaawansowane programowanie w C++ (PCP)

Bazy danych. Plan wykładu. Klucz wyszukiwania. Pojcie indeksu. Wykład 8: Indeksy. Pojcie indeksu - rodzaje indeksów

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Wypożyczalnia VIDEO. Technologie obiektowe

Projektowanie obiektowe Wzorce projektowe

Typy bazy danych Textract

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Ateus - Helios. System domofonowy

zdefiniowanie kilku grup dyskusyjnych, z których chcemy odbiera informacje, dodawanie, usuwanie lub edycj wczeniej zdefiniowanych grup dyskusyjnych,

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Komputerowa Ksiga Podatkowa Wersja 11.4 ZAKOCZENIE ROKU

FV Ando. Nie usuwasz danych Produkty, których ju nie sprzedajesz, nieaktywni kliencie oraz faktury mog by po prostu przeniesione do archiwum.

Spis treci. Dzie 1. I Wprowadzenie (wersja 0911) II Dostp do danych biecych specyfikacja OPC Data Access (wersja 0911)

WYKŁAD 7. Wzorce projektowe strukturalne Adapter Bridge

Wzorce projektowe strukturalne cz. 1

Wstp. Odniesienie do podstawy programowej

Plan wykładu. Reguły asocjacyjne. Przykłady asocjacji. Reguły asocjacyjne. Jeli warunki to efekty. warunki efekty

Wzorce projektowe Michał Węgorek

Bazy danych. Plan wykładu. Podstawy modeli relacyjnych. Diagramy ER. Wykład 3: Relacyjny model danych. SQL

Poradnik korzystania z serwisu UNET: Konfiguracja programu pocztowego

WYKŁAD 8. Wzorce projektowe strukturalne Facade Proxy Flyweight

System midzybankowej informacji gospodarczej Dokumenty Zastrzeone MIG DZ ver Aplikacja WWW ver. 2.1 Instrukcja Obsługi

Command (action, transaction, polecenie)

Mechanizm Finansowy EOG oraz Norweski Mechanizm Finansowy Fundusz kapitału pocztkowego. (ang. seed money)

Bazy danych. Plan wykładu. Metody organizacji pliku rekordów. Pojcie indeksu. Wykład 11: Indeksy. Pojcie indeksu - rodzaje indeksów

Bazy danych Podstawy teoretyczne

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Poradnik korzystania z serwisu UNET: Dostp do poczty elektronicznej ze strony WWW

Builder (budowniczy) Cel: Przykład:

Uywanie licencji typu On-Demand. Using an On-Demand License Japanese. Language. Contents

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016

Programowanie obiektowe

Bazy danych. Plan wykładu. Przetwarzanie zapyta. Etapy przetwarzania zapytania. Wykład 12: Optymalizacja zapyta. Etapy przetwarzanie zapytania

Analiza i projektowanie obiektowe 2016/2017. Wykład 8: Przypisywanie obiektom odpowiedzialności (2)

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Wzorce projektowe. Wstęp

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

1) Wzorzec projektowy Adapter. Zastosowanie:

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

ZPKSoft. Kreator dokumentów. Wstp. Przeznaczenie. Definicje

Mozilla Firefox PL. Wykorzystanie certyfikatów niekwalifikowanych w oprogramowaniu Mozilla Firefox PL. wersja 1.1

Wzorce projektowe cz. I. Wzorce projektowe cz. I 1/33

Wprowadzanie i zmiany faktur z zakupu, wydruk rejestru zakupu

{Opracowała Małgorzata Roguska} Tematy lekcji:

Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:

Słowa kluczowe Sterowanie klawiaturą, klawiatura, klawisze funkcyjne, przesuwanie obiektów ekranowych, wydawanie poleceń za pomocą klawiatury

Programowanie i projektowanie obiektowe

Instrukcja obsługi dodatku InsERT GT Smart Documents

Proces tworzenia programu:

Programowanie C# mgr in. Dariusz Ku. p. 119A

Programowanie w języku Java WYKŁAD

Instrukcja obsługi programu DIALux 2.6

Uywanie licencji typu Standalone. Japanese Using a Standalone License. Language. Contents

Podłczenie HMI do LOGO!..0BA7 (WinCC Basic V11)

Programowanie obiektowe

Bazy danych. Plan wykładu. Pierwsza posta normalna. Druga posta normalna. Wykład 7: Sprowadzanie do postaci normalnych. DDL, DML

Instrukcja obsługi regulatora i wizualizacji pieca pokrocznego na Walcowni Drobnej P46 Strona 1 z 26

Instrukcja dla pracowników Uniwersytetu Rzeszowskiego.

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Dla ułatwienia pracy wydrukuj poni sz instrukcj

Programowanie obiektowe

Język Java część 2 (przykładowa aplikacja)

Twoja instrukcja użytkownika HP PAVILION DV6-1215SA

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Projektowanie bezpiecze stwa sieci

Transkrypt:

WYKŁAD 13 Wzorce projektowe czynnociowe Chain of Responsibility Interpreter Memento

Behavioral Design Pattern: Chain of Responsibility [obj] Umoliwia uniknicie zwizania wysyłajcego danie z odbiorc dania przez danie wicej ni jednemu obiektowi szansy obsłuenia tego dania. Tworzy łacuch odbierajcych obiektów i przekazuje wzdłu niego danie, a jaki obiekt je obsłuy.

Uzasadnienie: Skoncentrujemy si na systemie pomocy kontekstowej w GUI. W zalenoci od tego, który element GUI zostanie wybrany przez uytkownika, wyswietli si stosowne objanienie dla tego elementu i dla jego aktualnego kontekstu. Jeli dla jakiego elementu brakuje w systemie objanienia, to powinno zosta wywietlone objasnienie ogólne, np. specyficzne dla kontenera.

W ten sposób zaznacza si konieczno uporzdkowania objanie wg stopnia ich ogólnoci. Obiekt, który ma dostarczy objanienia nie jest znany obiektowi graficznemu. Rozwizaniem jest tu stworzenie łacucha obiektów dostarczajcych objanie, poprzez który przejdzie danie pochodzce od obiektu graficznego.

Klasy Przycisk, Dialog i Aplikacja wykorzystuj metody z klasy ObsługaPomocy do reagowania na danie wywietlenia objanie. Metoda ObsłuPomoc() z tej klasy domylnie przekazuje danie obsłuenia pomocy do swojego nastpnika.

Stosowalno: wicej ni jeden obiekt moe obsłuy danie, a obiekt obsługujcy nie jest znany (powinien by on ustalany automatycznie) potrzeba wysłania dania do jednego z kilku obiektów bez jawnego okrelania właciwego odbiorcy zbiór obiektów, które mog obsłuy danie powinien by okrelony dynamicznie Struktura:

Uczestnicy: Obsługa (ObsługaPomocy) definiuje interfejs obsługi da moe implementowa odwołanie do nastpnika ObsługaKonkretna (PrzyciskDrukuj, DialogDrukowanie) obsługuje te dania, za spełnienie których odpowiada moe mie dostp do swojego nastpnika Klient generuje danie i przesyła je do obiektu klasy ObsługaKonkretna, wystpujcego w łacuchu

Współpraca: Gdy klient wysyła danie, jest ono przesyłne wzdłu łacucha, a jaki obiekt klasy ObsługaKonkretna wemie na siebie obowizek spełnienia go. Konsekwencje: zredukowanie powiza dodatkowa elastyczno w przydzielaniu obiektom zobowiza brak gwarancji odebrania dania

Implementacja: implementacja łacucha nastpników łczenie nastpników reprezentowanie da Przykłady Znane zastosowania

Pokrewne wzorce: Composite rodzic komponentu moe odgrywa rol jego nastpnika

Behavioral Design Pattern: Interpreter [cls] Definiuje reprezentacj dla gramatyki zadanego jzyka, a take interpreter, który wykorzystuje t reprezentacj do interpretowania zda w zadanym jzyku.

Uzasadnienie: Czsto powtarzajcy si problem czasem warto opisa przy pomocy jakiego jzyka. Wyraenia tego jzyka s nastpnie interpretowane. Aby mogło do tego doj konieczne jest zdefiniowanie gramatyki. Wzorzec ten wykorzystuje klasy do reprezentowania kadej reguły gramatycznej.

Rozwamy np. gramtyk regularn: G=(S,N,T,P) gdzie: S = wyraenie N = {wyraenie, wybór, sekwencja, powtórzenie, literał} T = {a,b,c,d,,*,&, (,)}

P: wyraenie -> literał wyraenie -> wybór wyraenie -> sekwencja wyraenie -> ( wyraenie ) wybór -> wyraenie wyraenie sekwencje -> wyraenie & wyraenie powtórzenie -> wyraenie * literał -> a b c {a b c }*

Abu utworzy interpreter wystarczy zdefiniowa metod Interpretuj() w podklasach i przekaza jej kontekst (dane wejciowe i informacja jak dua cz został dopasowana do wzorca)

Stosowalno: Stosuje si go gdy istnieje jzyk nadajcy si do interpretowania i gdy zdania w tym jzyku mona reprezentowa jako drzewo składni abstrakcyjnej. Ponadto gdy: gramatyka jest prosta (gdy jest skomplikowana, to generatory analizatorów) efektywno nie jest bardzo wana (gramatyki regularne jako maszyny stanu wtedy te mona uy tego wzorca) Struktura:

Uczestnicy: WyraenieAbstrakcyjne (WyraenieRegularne) deklaruje operacj abstrakcyjn Interpretuj() wspóln dla wszystkich wzłów w drzewie składni abstrakcyjnej WyraenieKocowe (WyraenieLiterał) implementuje operacj Interpretuj() zwizan z symbolami terminalnymi dla kadego symbolu terminalnego jest wmagany jedna instancja

WyraeniePomocnicze (WyraenieWybór, WyraeniePowtórzenie, WyraenieSekwencja) jedna instancja dla kadej produkcji gramatyki utrzymuje zmienne egzemplarzowe typu WyraenieAbstrakcyjne dla kadego z symboli prawej strony produkcji implementuje operacje Interpretuj() dla symboli nieterminalnych w gramatyce, zwykle wywołuje si j rekurencyjnie na zmiennych egzemplarzowych

Kontekst zawiera globalne informacje dla interpretera Klient buduje (lub dostaje) drzewo składni abstrakcyjnej dla zdania na wejciu wywołuje operacj Interpretuj()

Współpraca: Klient buduje lub otrzymuje zdanie w postaci drzewa składni abstrakcyjnej złoonego z instancji kals WyraeniePomocnicze i WyraenieKocowe, nastpnie inicjuje kontekst i wywołuje operacj Interpretuj() kady wzeł bdcy WyraeniemPomocniczym definiuje operacj Interpretuj() w kategoriach tej operacji wywołanej dla kadego z podwyrae tego wyraenia; operacja Interpretuj() kadgo WyraeniaKocowego definiuje podstawowy przypadek rekursji operacje Interpretuj() z kadego wzła wykorzystuj kontekst do przechowywania stanu interpretera i uzyskiwania dostpu do niego

Konsekwencje: łatwe zmienianie i rozszerzanie gramatyki łatwa implementacja gramatyki trudne utrzymywanie złoonej gramatyki moliwo dodawania nowych sposobów interpretowania wyrae

Implementacja: tworzenie drzewa składni abstrakcyjnej definiowanie operacji Interpretuj() współdzielenie symboli kocowych za pomoc wzorca Flyweight Przykłady Zastosowania

Pokrewne wzorce: Composite drzewo składni abstrakcyjnej to przykład zastosowania wzorca Composite Flyweight wskazuje jak współdzieli symbole terminalne w obrebie składni abstrakcyjnej Iterator moe by wykorzystywany do przechodzenia struktury Visitor moe by zastosowany do zrealizowania w jednej klasie działa okrelonych w kadym wle drzewa składni abstrakcyjnej

Behavioral Design Pattern: Memento [obj] Nie naruszajc kapsułkowania zapamituje i udostpnia na zewntrz stan wewntrzny obiektu, tak, e obiekt moe by póniej przywrócony do zapamitanego stanu.

Uzasadnienie Czasami bywa konieczne zapamitanie wewntrznego stanu obiektów w celu wycofania si z przeprowadzonych operacji. Zwykle obiekty kapsułkuj swój stan czynic go niedostpnym a tym samym uniemoliwiajc zapisanie go na zewntrz.

Edytor graficzny uwzgldniajcy połczenia obiektów. Np. mamy dwa prostokty połczone odcinkiem prostej. W trakcie przesuwania jednego z prostoktów bd one nadal połczone ze sob. Klasa RozwizywaczOgranicze zapamituje połczenia w trakcie tworzenia ich i generuje opisujce je równania matematyczne, które rozwizuje przy zmianie na diagramie. Nastpnie klasa ta wykorzystuje wyniki oblicze do przesuwania odcinka. Implementacja anulowania operacji nie jest taka prosta w tym przykładzie.

Interfejs klasy RozwizywaczOgranicze moe nie wystarcza do wykonania operacji odwrotnej. Zapamitywanie ostatniego przemieszczenia moe by niedobre ze wzgldu na błdy oblicze. Przydatny moe si tu okaza wzorzec Memento. Pamitka jest obiektem przechowujcym migawk wewntrznego stanu innego obiektu jej ródła. Mechanizm anulowania prosi ródło o pamitk kiedy chce ustawi punkt kontrolny stanu ródła. ródło inicjuje pamitk informacjami opisujcymi jego stan biecy.

ródłem jest w przykładzie RozwizywaczOgranicze. Anulowanie operacji: 1. Edytor prosi klas RozwizywaczOgranicze o pamitk jako efekt uboczny operacji przesuwania. 2. Klasa RozwizywaczOgranicze tworzy i przekazuje pamitk, któr jest obiekt klasy StanRozwizywacza. Pamitka ta zawiera struktury danych opisujce biecy stan wewntrznych równa i zmiennych obiketu klasy RozwizywaczOgranicze. 3. Kiedy uytkownik anuluje operacj przesuwania edytor przekazuje StanRozwizywacza z powrotem do RozwizywaczaOgranicze. 4. Klasa RozwizywaczOgranicze odtwarza swój stan.

Stosowalno: trzeba zapamita migawkstanu obiektu (lub czci stanu), tak aby mona go było potem przywróci do tego stanu oraz bezporedni interfejs do uzyskania stanu ujawniałby szczegóły implementacji i naruszałby hermetyzacj obiektu

Uczestnicy: Pamitka (StanRozwizywacza) przechowuje potrzebn cz stanu wewntrznego obiektu ródło chroni stan przed dostpem innych obiektów dwa róne interfejsy ródło (RozwizywaczOgranicze) tworzy pamitk zawierajc migawk swojego biecego stanu wewntrznego wykorzystuje pamitk do odtworzenia swojego stanu wewntrznego

Opiekun (mechanizm anulowania) jest odpowiedzialny za opiek nad pamitk nigdy nie wykonuje operacji na pamitce ani nie bada jej zawartoci

Współpraca: Opiekun prosi ródło o pamitk, przez jaki czas j przechowuje, a nastpnie zwraca ródłu pamitki s pasywne jedynie ródło bdzie przypisywa lub odtwarza stan pamitki

Konsekwencje: zachowanie granic kapsułkowania uproszczenie ródła uycie pamitek moe by kosztowne definiowanie zawonych i szerokich interfejsów ukryte koszty zwizane z opiek nad pamitkami

Implementacja: wsparcie ze strony jzyka przechowywanie zmian przyrostowych

Przykłady Znane zastosowania Pokrewne wzorce Command polecenia mog uywa pamitek do pamitania stanu w wypadku wycofywanych operacji Iterator pamitek mona uywa do obsługi procesu iterowania