WYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod



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

WYKŁAD 12. Wzorce projektowe czynnociowe State Mediator

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

WYKŁAD 9. Wzorce projektowe czynnociowe Observer Visitor

Wzorce projektowe kreacyjne

Wprowadzenie do programowania aplikacji mobilnych

Programowanie w języku Java WYKŁAD

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe strukturalne cz. 1

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie obiektowe

Zaawansowane programowanie obiektowe - wykład 5

Wzorce projektowe. dr inż. Marcin Pietroo

WYKŁAD 5. Wzorce projektowe kreacyjne Builder Prototype

Projektowanie obiektowe Wzorce projektowe

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

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

Zaawansowane programowanie w C++ (PCP)

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Programowanie Obiektowe

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

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

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

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

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

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

Testowanie oprogramowania Wzorce projektowe

Template method (metoda szablonowa)

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne

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

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

Builder (budowniczy) Cel: Przykład:

Podstawy programowania III WYKŁAD 4

Programowanie obiektowe - 1.

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

Technologia Programowania 2016/2017 Wykład 5

Model obiektu w JavaScript

Wzorce projektowe i refaktoryzacja

Wzorce projektowe Michał Węgorek

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

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

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

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

WYKŁAD 8. Wzorce projektowe strukturalne Facade Proxy Flyweight

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

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

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

Ateus - Helios. System domofonowy

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

Wypożyczalnia VIDEO. Technologie obiektowe

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

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

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

MiASI. Modelowanie analityczne. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Aplikacje w środowisku Java

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wzorce projektowe. Wstęp

Programowanie obiektowe

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

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)


Command (action, transaction, polecenie)

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

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

Programowanie obiektowe

Wykład 1 Inżynieria Oprogramowania

Planowanie adresacji IP dla przedsibiorstwa.

Program Sprzeda wersja 2011 Korekty rabatowe

WYKŁAD 7. Wzorce projektowe strukturalne Adapter Bridge

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Programowanie obiektowe

1) Wzorzec projektowy Adapter. Zastosowanie:

Bazy danych Podstawy teoretyczne

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

Sposoby przekazywania parametrów w metodach.

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

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

hierarchie klas i wielodziedziczenie

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

Programowanie obiektowe

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

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

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

Instrukcja obsługi dodatku InsERT GT Smart Documents

Paweł Kurzawa, Delfina Kongo

Programowanie obiektowe

Dziedziczenie. Tomasz Borzyszkowski

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

Programowanie obiektowe

Modelowanie i Programowanie Obiektowe

Programowanie w języku Java WYKŁAD

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Symulacja samochodu z kamerą stereowizyjną. Krzysztof Sykuła 15 czerwca 2007

Technologie obiektowe

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

1. WSTP. 2. Koncepcja platformy bezpieczestwa publicznego

Transkrypt:

WYKŁAD 11 Wzorce projektowe czynnociowe Iterator TemplateMethod

Behavioral Design Pattern: Iterator [obj] Zapewnia sekwencyjny dostp do elementów agregatu bez ujawniania jego reprezentacji wewntrznej.

Uzasadnienie: Obiekt zagregowany np. lista powinien zapewnia klientowi dostp do swoich elementów bez ujawniania swojej wewntrznej reprezentacji. Sposoby przechodzenia elementów agregatu te mog by róne i nie powinny zamieca agregatu. Moe by te potrzeba przechodzenia w danej chwili elementów agregatu na kilka rónych sposobów.

Wzorzec Iterator rozwizuje te wszystkie problemy. Realizuje to poprzez przeniesienie odpowiedzialnoci przechodzenia elementów agragatu poza agregat do obiektu iteratora. Przykładem moe by klasa Lista i IteratorPoLicie.

Dziki oddzieleniu mechanizmu przechodzenia po obiekcie klasy Lista od samej Listy mona zaimplementowa w obikecie Iterator róne strategie jej przechodzenia np. FiltrujcyIteratorPoLicie. Przy takim rozwizaniu jak na powyszym diagramie klient musi wiedzie, e bdzie działał włanie na licie. Idełem byłoby zapewnienie moliwoci zmiany klasy-agregatu bez zmiany klienta. Da si to zrobi wprowadzajc iteracj polimorficzn.

Dodajemy now klas ListaZPrzeskokami (probabilistyka). Wprowadzamy dla obu list nadklas abstrakcyjn ListaAbstrakcyjna zapewniajc wspólny interfejs do działania na listach. Potrzebna bdzie te klasa abstrakcyjna Iterator okrelajca wspólny interfejs do przechodzenia po listach. Teraz dla nadklasy Iterator definiujemy podklasy konkretne po jednej dla kadego rodzaju listy.

Klient nie powinien jednak tworzy konkretnych typów iteratorów. Lepiej aby konkretne klasy list były odpowiedzialne za utworzenie właciwego dla nich iteratora operacja StworzIterator() udostpniajca klientowi konkretny obiekt iteratora. Operacja ta, to przykład wzorca projektowego FactoryMethod.

Stosowalno: uzyskanie dostpu do zawartoci obiektu-agregatu bez ujawniania jego struktury wewntrznej umoliwienie wielokrotnego przechodzenia obiektów-agregatów zapewnienie jednakowego interfejsu przechodzenia rónych struktur zagregowanych (iteracja polimorficzna)

Struktura:

Uczestnicy: Iterator definiuje interfejs dostpu do elementów agragatu i przechodzenia ich IteratorKonkretny implementuje interfejs Iteratora pamita biec pozycj osignit przy przechodzeniu agregatu

Agregat definiuje interfejs tworzenia obiketówiteratorów AgregatKonkretny implementuje interfejs tworzenia Iteratora tak, aby przekazywał egzemplarz odpowiedniego IteratoraKonkretnego

Współpraca: Klasa IteratorKonkretny ledzi, który obiekt w agregacie jest biecy i potrafi wskaza nastpny obiekt

Konsekwencje: moliwo rozmaitego przechodzenia agregatów iteratory upraszczaj interfejs Agregatu w danej chwili moe si odbywa wicej ni jedno przechodzenie agregatu

Implementacja: który z uczestników steruje procesem iteracyjnym? iterator zewntrzny (aktywny) albo iterator wewntrzny (pasywny) który z uczestników definiuje algorytm przechodzenia? na ile iterator jest odporny? dodatkowe operacje Iteratora

stosowanie iteratorów polimorficznych w C++ iteratory mog mie uprzywilejowany dostp iteratory dla kompozytów iteratory puste

Przykłady Znane zastosowania Pokrewne wzorce: Composite iteratory czsto stosuje si do struktur rekurencyjnych FactoryMethod iteratory polimorficzne stosuj ten wzorzec do tworzenia obiektów odpowiednich podklas klasy Iterator Memento Iterator moe wykorzysta pamitk do uchwycenia stanu procesu iteracyjnego. Wtedy przechowuje pamitk wewntrznie

Behavioral Design Pattern: TemplateMethod [cls] Definiuje szkielet algorytmu jako operacj przekazujc definicj biektórych kroków algorytmu do podklas. W ten sposób umoliwia podklasom przedefiniowywanie pewnych kroków algorytmu bez zmiany jego struktury.

Uzasadnienie: Wyobramy sobie zrb do tworzenia aplikacji. Ma on klasy Aplikacja i Dokument. Aplikacja odpowiada za otwieranie dokumentów, a Dokument reprezentuje informacje o dokumencie wczytanym z pliku. Z klas tych dziedzicz klasy konkretne zwizane z poszczególnymi dziedzinami zastosowa (edytor graficzny, arkusz kalkulacyjny).

Metoda OtwórzDokument() definiuje szablon algorytmu otwierania dokumentu rozbity na abstrakcyjne kroki przeznaczone do zaimplementowania w podklasach. Dziki temu znana jest kolejno kroków implementowanych w klasach konkretnych. To co dzieje si w tych krokach okrelaj metody podklasy.

Stosowalno: jednorazowe zaimplementowanie stałej czci algorytmu i pozostawienie podklasom implementacji tej czci, któa moe si zmienia potrzeba zastosowania refaktoryzacji w celu uogólnienia umiesczenie wspólnego zachowania podklas w nadklasie kontrolowanie rozszerzania klas wprowadza tzw. operacje-punkty zaczepienia w zadanych miejscach kodu

Struktura:

Uczestnicy: KlasaAbstrakcyjna (Aplikacja) definiuje abstrakcyjne operacje pierwotne przedefiniowywane przez podklasy w celu zaimplementowania kroków algorytmu implementuje metod szablonow definiujc szkielet algorytmu, która wywołuje operacje pierwotne oraz inne operacje KlasaKonkretna implementuje operacje pierwotne w celu wykonania kroków algorytmu specyficznych dla danej klasy

Współpraca: KlasaKonkretna polega na KlasieAbstrakcyjnej w kwestii implementacji niezmiennych kroków algorytmu.

Konsekwencje: podstawowa technika zagwarantowania ponownego uycia kodu wydzielanie wspólnego zachowania w klasach bibliotecznych wprowadzanie odwróconej struktury sterowania zw. zasad z Hollywood - nie dzwo do nas, my zadzwonimy do ciebie (nadklasa wywołuje operacje podklasy) wydziela si operacje które mog by przedefiniowane (punkty zaczepienia) oraz operacje, które musz by przedefinowane (operacje pierwotne) aby nie zapomnie o wywołaniu metody przecianej z nadklasy w podklasie mona uy punktu zaczepienia

Zamiast: void Podklasa::Operacja(){ Nadklasa::Operacja(); // mona łatwo zapomnie } mona: void NadklasaOperacja(){ OperacjaPunktZaczepieni(); } void Nadklasa::OperacjaPunktZaczepienia(){} void Podklasa::OperacjaPunktZaczepienia(){ // rozszerzenie przez podklas }

Implementacja: stosowanie mechanizmów sterwania dostepem z C++ minimalizowanie iloci operacji pierwotnych konsekwencje dotyczce nadawania nazw

Przykłady Zastosowania Pokrewne wzorce: FactoryMethod jest czsto wywoływana z metod szablonowych Strategy wykorzystuj delegowanie do zmieniania całego algorytmu w odrónieniu od TemplateMethod, która wykorzystuje dziedziczenie do zmiany czci algorytmu