WYKŁAD 10. Wzorce projektowe czynnociowe Command Strategy

Podobne dokumenty
WYKŁAD 12. Wzorce projektowe czynnociowe State Mediator

WYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod

WYKŁAD 9. Wzorce projektowe czynnociowe Observer Visitor

Wzorce projektowe kreacyjne

Wzorce projektowe. dr inż. Marcin Pietroo

WYKŁAD 5. Wzorce projektowe kreacyjne Builder Prototype

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

Sposoby przekazywania parametrów w metodach.

Wzorce projektowe. dr inż. Marcin Pietroo

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

Zaawansowane programowanie obiektowe - wykład 5

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

Programowanie Obiektowe

Command (action, transaction, polecenie)

Projektowanie obiektowe Wzorce projektowe

Wzorce projektowe. dr inż. Marcin Pietroo

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

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

Program Sprzeda wersja 2011 Korekty rabatowe

Wprowadzenie do programowania aplikacji mobilnych

stopie szaro ci piksela ( x, y)

Programowanie obiektowe

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

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

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

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

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

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

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

Builder (budowniczy) Cel: Przykład:

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

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

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Ateus - Helios. System domofonowy

Bazy danych Podstawy teoretyczne

Zadania do wykonaj przed przyst!pieniem do pracy:

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Typy bazy danych Textract

WYKŁAD 8. Wzorce projektowe strukturalne Facade Proxy Flyweight

Microsoft PowerPoint 2003 efektywne tworzenie i prezentacji multimedialnych

Klonowanie MAC adresu oraz TTL

Zaawansowane programowanie w C++ (PCP)

Przygotowanie rodowiska dla egzaminu e-obywatel

Wzorce projektowe strukturalne cz. 1

Wzorce projektowe Michał Węgorek

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

Wypożyczalnia VIDEO. Technologie obiektowe

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

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

Przegldanie stron wymaga odpowiedniej mikroprzegldarki w urzdzeniu mobilnym lub stosownego emulatora.

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

Programowanie obiektowe

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Wprowadzenie do kompilatorów

Testowanie oprogramowania Wzorce projektowe

1) Wzorzec projektowy Adapter. Zastosowanie:

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

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

RELACYJNE BAZY DANYCH TEORIA. Bazy danych to uporzdkowany zbiór informacji z okrelonej dziedziny lub tematyki przeznaczony do wyszukiwania

Wzorcowy załcznik techniczny, do umowy w sprawie przesyłania faktur elektronicznych pomidzy Firm A oraz Firm B

Program do konwersji obrazu na cig zero-jedynkowy

Wykład 1 Inżynieria Oprogramowania

Instrukcja obsługi dodatku InsERT GT Smart Documents

1. WSTP. 2. Koncepcja platformy bezpieczestwa publicznego

Bazy danych Transakcje

Programowanie obiektowe - 1.

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

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

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

WYKŁAD 7. Wzorce projektowe strukturalne Adapter Bridge

Gramatyki regularne i automaty skoczone

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

(wybrane) Wzorce projektowe. Programowanie Obiektowe Mateusz Cicheński

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

FAKTURA PRZEDPŁATA PODRCZNIK UYTKOWNIKA

Listy i operacje pytania

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

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

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

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

Programowanie obiektowe

CYKL ZAJ POZNAJEMY POWER POINT

4CMSystem. Podrcznik uytkownika. Strona projektu: Realizacja projektu:

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

PROCEDURY REGULACYJNE STEROWNIKÓW PROGRAMOWALNYCH (PLC)

Programowanie współbieżne i rozproszone

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykład 1: Wprowadzenie do baz danych. Semestr 1

Technologia Programowania 2016/2017 Wykład 5

Planowanie adresacji IP dla przedsibiorstwa.

Wzorce projektowe i refaktoryzacja

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Transkrypt:

WYKŁAD 10 Wzorce projektowe czynnociowe Command Strategy

Behavioral Design Pattern: Command [obj] Kapsułkuje dania w postaci obiektu, co umoliwia parametryzowanie klientów rónymi daniami, kolejkowanie da lub zapisywanie ich w dziennikach, a take ułatwia implementacj anulowanych operacji. Inne nazwy: Akcja, Transakcja

Uzasadnienie: Czasem istnieje potrzeba wydawania da obiektom bez jakiejkolwiek wiedzy o danej operacji lub odbiorcy dania. Przykładem mog by elementy GUI takie jak przyciski lub menu. Obiekty te s odpowiedzialne za wykonywanie da w odpowiedzi na akcje uytkownika. dania te zale jednak od zastosowania. Obiekty graficzne nie mog go zna ani nie mog go w sobie implementowa. Rozwizaniem jest przekształcenie dania w obiekt. Obiekt ten mona przekazywa. Klasa Polecenie deklaruje interfejs do rónych działa, np. jednooperacyjny Wykonaj(). Podklasy konkretne okrelaj pary odbiorca- akcja pamitajc odbiorc jako zmienn i implementujc Wykonaj() w celu wywołania dania. Odbiorca ma wiedz wymagan do spełnienia dania.

Dobrym przykładem jest implementacja Menu. Kady element menu jest obiketem klasy ElementMenu. Klasa Aplikacja tworzy menu i jego elementy wraz z reszt interfejsu uytkownika. Kontroluje ona te na bieco obiekty Dokument otwarte przez uytkownika.

Aplikacja konfiguruje kady obiekt klasy ElementMenu za pomoc obiektu podklasy konkretnej Polecenia. Gdy uytkownik wybierze ElementMenu, ten wywołuje Wykonaj() ze swojego obiektu Polecenia. Obiekty klasy ElementMenu nie wiedz której podklasy Polecenia uywaj. Podklasy Polecenia przechowuj odbiorc dania i wywołuj jedn lub wicej jego operacji.

Czasami pojawia si te konieczno wykonania całego cigu polece. Aby realizowa takie cigi polece mona zdefiniowa klas MakroPolecenie, która moe wykona nieograniczony cig polece przez ni okrelony.

Wzorzec Command rozdziela obiekt wywołujcy operacj od obiektu, który wie jak j wykona. Daje to elastyczno przy projektowaniu interfejsu uytkownika. Mona np. zapewni aby ta sama operacja była wywoływana zarówno z Menu jak i przez przycisk dziki korzystaniu przez nie z tego samego obiketu klasy konkretnej Polecenia. Polecenia mona wymienia dynamicznie, co przydaje si przy menu zalenym od kontekstu. Mona te tworzy skrypty z polece przez składanie ich z fragmentów (por. nagrywanie makr np. w aplikacjach MS Office).

Stosowalno: sparametryzowanie obiektów wykonywan akcj (jak ElementMenu) w jzykach proceduralnych odpowiada to funkcjom zwrotnym (callbacks) specyfikowanie, kolejkowanie i spełnianie da w rónym czasie mona przesyła obiekty dania do innych procesów i tam je realizowa uzgldnienia anulowania wprowadzanych zmian operacja Wykonaj() z obiektu Polecenie moe zapamita stan (lista stanów) potrzebny do cofnicia skutków jej działania przez operacj AnulujWykonanie()

umoliwienie wpisywania zmian do dziennika, tak aby w razie niepowodzenia (nawet awaria systemu) mona było je ponownie wykona konieczno dodania operacji Zapisz() i Wczytaj() do interfejsu Polecenia stworzenie systemu wokół operacji wysokiego poziomu zbudownych z operacji pierwotnych systemy transakcyjne

Struktura:

Uczestnicy: Polecenie deklaruje interfejs do wykonywania operacji PolecenieKonkretne (PolecenieWklej, PolecenieOtwórz) definiuje powizanie midzy obiektem Odbiorca i akcj implementuje operacj Wykonaj() przez wywołanie odpowiednich operacji Odbiorcy

Klient (Aplikacja) worzy obiekt klasy PolecenieKonkretne i ustala jego odbiorc Wywołujcy (ElementMenu) prosi polecenie o spełnienie dania Odbiorca (Dokument, Aplikacja) wie jak wykona operacje zwizane ze spełnieniem dania; Odbiorc moe by dowolna klasa

Współpraca: Klient tworzy obiekt PolecenieKonkretne i podaje jego odbiorc ObiektWywołujcy przechowuje obiekt PolecenieKonkretne Wywołujcy zgłasza danie, wywołujc operacj Wykonaj() Polecenia; jeli jest wycofywalne, to najpierw zapamituje stan obiekt PolecenieKonkretne wywołuje operacje swojego odbiorcy w celu spełnienia dania

Konsekwencje: Polecenie oddziela obiekt, który wywołał operacj od tego, który wie jak j wykona Polecenia s obiektami mog by przetwarzane tak jak inne obiekty z poszczególnych polece mona tworzy polecenia złoone przykład MakroPolecenie; ogólnie polecenia złoone s obiektami z wzorca Composite mona łatwo dodawa nowe polecenia bez modyfikowania istniejcych klas

Implementacja: na ile inteligentne powinno by polecenie? moliwo anulowania i przywracania operacji unikanie narastania błdów w procesie anulowania operacji stosowanie szablonów z C++

Przykłady Zastosowania Pokrewne wzorce: Composite do implementowania MakroPolecenia Memento do pamitania stanu potrzebnego do anulowania operacji Prototype Polecenie, które musi by skopiowane przed umieszczeniem go na licie działa jak Prototype

Behavioral Design Pattern: Strategy [obj] Definiuje rodzin algorytmów, kapsułkuje kady z nich i umoliwia ich wymian. Sprawia, e moliwe staje si zmienianie algorytmu niezalenie od uywajcych go klientów.

Uzasadnienie: W edytorach tekstu stosuje si wiele algorytmów dzielcych tekst na wiersze. Jednak algorytmów takich nie powinnimy umieszcza na sztywno w klasach, poniewa: klienci wymagajacy dzielenia tekstu na wiersze staj si skomplikowani róne algorytmy s odpowiednie w rónych sytuacjach, ale moemy niepotrzebowa wszystkich trudno jest dodawa lub zmienia algorytmy gdy podział na wiersze jest czci klienta

Aby unikn tych problemów moemy zdefiniowa klasy, które kapsułkuj poszczególne algorytmy podziału na wiersze. Zakapsułkowany w ten sposób algorytm nazywamy strategi.

ObiektZłoony jest odpowiedzialny za utrzymywanie i uaktualnianie przej do nowych wierszy w tekcie. Strategie podiału na wiersze nie s jednak zaimplementowane w niej, lecz oddzielnie w klasach konkretnych klasy Składacz. Podklasy konkretne klasy Składacz implementuj róne strategie.

Składacz prosty w danej chwili wyznacza jedno przejcie do nowego wiersza SkładaczTeXowy optymalizuje globalnie od razu dla całego akapitu zestaw przej do nowej linii SkładaczTablicowy tak dobiera przejcia do nowego wiersza aby kady wiersz miał tyle samo elementów

ObiektZłoony ma odwołanie do obiektu Składacz. Przy kadym formatowaniu przekazuje on odpowiedzialno do wybranego przez siebie obiektu Składacz konkretny.

Stosowalno: wiele powizanych ze sob klas róni si tylko zachowaniem strategie umoliwiaj konfigurowanie klasy za pomoc jednego z wielu zachowa potrzebne s róne warianty jakiego algorytmu w algorytmie s uywane dane, o których klient nie powinien wiedzie ukrycie ich w algorytmach kasa definiuje wiele zachowa, które w jej metodach s obłoone wielokrotnymi instrukcjami warunkowymi mona unikn objawu wskazujcego na nadmiern strukturalno kodu

Struktura:

Uczestnicy: Strategia (Składacz) deklaruje interfejs wspólny dla wszystkich obsługiwanych algorytmów; Kontekst wykorzystuje ten interfejs do wykonywania algorytmu zdefiniowanego przez StrategiKonkretn StrategiaKonkretna (SkładaczProsty, SkładaczTeXowy, SkładaczTablicowy) implementuje algorytm wykorzystujc interfejs z klasy Strategia

Kontekst (ObiketZłoony) jest konfigurowany za pomoc obiektu StrategiaKonkretna utrzymuje odwołanie do obiektu Strategia moe definiowa interfejs umoliwiajcy Strategii uzyskanie dostpu do swoich danych

Współpraca: klasy Strategia i Kontekst współdziałaj w celu zastosowania wybranego algorytmu Kontekst moe przekaza potrzebne dane albo samego siebie (wtedy moliwo odwoła zwrotnych) Kontekst przekazuje dania od klientów do swojej strategii zwykle klienci tworz obiekt StrategiaKonkretna i przekazuj go do kontekstu, a potem komunikuj si wyłcznie z kontekstem

Konsekwencje: rodziny powizanych ze sob algorytmów alternatywa dla tworzenia podklas eliminacja instrukcji warunkowych wybór implementacji klienci musz by wiadomi istnienia rónych strategii koszty zwizane z komunikacj midzy Strategi a Kontekstem zwikszona ilo obiektów rozwizaniem jest wtedy wzorzec obiektowy FlyWeight

Implementacja: definiowanie interfejsów Strategii i Kontekstu strategie jako parametry szablonów wtedy eliminacja klasy abstrakcyjnej Strategia dooprowadzenie do tego aby obiekty klasy Strategia były opcjonalne moliwo wprowadzenia domylnego zachowania Kontekstu

Przykłady Zastosowania Pokrewne wzorce: Flyweight obiekty Strategia s czsto dobrymi kandydatami na pyłki.