WYKŁAD 5. Wzorce projektowe kreacyjne Builder Prototype



Podobne dokumenty
Wzorce projektowe kreacyjne

WYKŁAD 10. Wzorce projektowe czynnociowe Command Strategy

WYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo

WYKŁAD 9. Wzorce projektowe czynnociowe Observer Visitor

WYKŁAD 12. Wzorce projektowe czynnociowe State Mediator

Programowanie obiektowe

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

Projektowanie obiektowe Wzorce projektowe

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

Zaawansowane programowanie w C++ (PCP)

Wprowadzenie do programowania aplikacji mobilnych

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

Testowanie oprogramowania Wzorce projektowe

Programowanie w języku Java WYKŁAD

Builder (budowniczy) Cel: Przykład:

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

Wzorce projektowe strukturalne cz. 1

Technologia Programowania 2016/2017 Wykład 5

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 oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

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

Model obiektu w JavaScript

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

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

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

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

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

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

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

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

Technologia Programowania 2016/2017 Wykład 4

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

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Wzorce projektowe Michał Węgorek

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce oprogramowania Gof. zastosowane w modelu obiektowym

Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego u ytku

1) Wzorzec projektowy Adapter. Zastosowanie:

Planowanie adresacji IP dla przedsibiorstwa.


Programowanie w języku Java WYKŁAD

Zaawansowane programowanie obiektowe - wykład 5

Szablony klas, zastosowanie szablonów w programach

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

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. Wstęp

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

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

geometry a w przypadku istnienia notki na marginesie: 1 z 5

Wzorce projektowe [ wstęp ]

Sposoby przekazywania parametrów w metodach.

Programowanie Obiektowe

Abstract Factory (fabryka abstrakcyjna)

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)

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce odpowiedzialności

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

Przykładowa implementacja

stopie szaro ci piksela ( x, y)

WYKŁAD 8. Wzorce projektowe strukturalne Facade Proxy Flyweight

Gramatyki regularne i automaty skoczone

WYKŁAD 7. Wzorce projektowe strukturalne Adapter Bridge

Studium przypadku Case Study CCNA2-ROUTING

Decorator (dekorator)

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

Wypożyczalnia VIDEO. Technologie obiektowe

Programowanie obiektowe

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

Perspektywa obiektowości

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

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

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

Wprowadzenie do kompilatorów

Wykład 1 Inżynieria Oprogramowania

Wprowadzenie do projektu QualitySpy

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

WZORCE PROJEKTOWE. Software engineering has accepted as its charter How to program if you cannot. E. Djikstra

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Cash flow projektu zakładajcego posiadanie własnego magazynu oraz posiłkowanie si magazynem obcym w przypadku sezonowych zwyek

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

Klonowanie MAC adresu oraz TTL

Listy i operacje pytania

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Poprawa efektywnoci metody wstecznej propagacji bdu. Jacek Bartman

Programowanie obiektowe

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

SUPLEMENT SM-BOSS WERSJA 6.15

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

Bazy danych Podstawy teoretyczne

Programowanie współbieżne i rozproszone

Transkrypt:

WYKŁAD 5 Wzorce projektowe kreacyjne Builder Prototype

Creational Design Pattern: Builder Oddziela konstrukcj obiektów złoonych od ich reprezentacji umoliwiajc tym samym powstawanie w jednym procesie konstrukcyjnym rónych reprezentacji.

Uzasadnienie stosowania: Problem przekształcania formatu RTF do innych formatów. Ze wzgldu na du ilo moliwych konwersji powinno da si łatwo dodawa nowe bez modyfikowania klienta.

Czytnik RTF AnalizujRTF() +budowniczy KonwerterTek stowy PrzeksztalcZnak() PrzeksztalcZmianeCzcionki() PrzeksztalcAkapit() KonwerterNaA SCII PrzeksztalcZnak() PodajTekstASCII() KonwerterNaTeX PrzeksztalcZnak() PrzeksztalcZmianeCzcionki() PrzeksztalcAkapit() PodajTekstTeX() TekstASCII TekstTeX

Stosowalno: algorytm tworzenia obiektu złoonego niezaleny od czci składowych tego obiektu i sposobu ich zestawiania proces konstruowania musi uwzgldnia róne reprezentacje konstruowanego obiektu Struktura:

Kierownik Konstruuj() +budowniczy Budowniczy ZbudujCzesc() dla kazdego obiektu ze struktury{ budowniczy->zbudujcz esc() } BudowniczyKonkret ny ZbudujCzesc() PodajWynik() Produkt

Uczestnicy: Budowniczy (KonwerterTekstowy) okrela interfejs abstrakcyjny do tworzenia czci składowych obiektu Produkt

BudowniczyKonkretny (KonwerterNaASCII, KonwerterNaTeX) konstruuje i zestawia cz produktu poprzez implementowanie interfejsu Budowniczego definiuje i kontroluje tworzon przez siebie reprezentacj zapewnia interfejs do wyszukiwania produktu (np.. PodajTekstASCII)

Kierownik (CzytnikRTF) konstruuje obiekt uywajc interfejsu Budowniczego Produkt (TekstASCII, TekstTeX) reprezentuje konstruowany obiekt złoony; klasa BudowniczyKonkretny buduje wewntrzn reprezentacj produktu i definiuje proces składania go; zawiera klasy definiujce czci składowe, włczajc w to interfejsy zestawiaania czci w kocowy wynik

Współpraca: Klient tworzy obiekt Kierownik i konfiguruje go za pomoc podanego obiektu Budowniczy Kierownik informuje budowniczego o potrzebie zbudowania czci produktu Budowniczy przetwarza dania klienta i dodaje czci do produktu Klient odbiera produkt od Budowniczego

Konsekwencje: Umoliwienie zmiany wewntrznej reprezentacji produktu Oddzielenie kodu słucego do konstruowania od reprezentacji róni Kierownicy mog ponownie uywa kodu do budowania rónych wariantów Produktu z tego samego zestawu czci Lepsza kontrola procesu konstruowania nie za jednym podejciem ale krok po kroku, na zakoczenie kierownik pobiera produkt od budowniczego

Implementacja: klasa Budowniczy zawiera zwykle puste metody, a BudowniczyKonkretny nadpisuje je interfejs montowania i konstruowania brak klasy abstrakcyjnej produktów zbyt due rónice Przykłady:

Znane zastosowania: konwerter RTF Parser w Smalltalk BudowniczyKlas StrumieKodówBajtowych

Pokrewne wzorce: AbstractFactory te moe konstruowa obiekty złoone, ale nie krok po kroku ale raczej całe rodziny produktów. Budowniczy przekazuje produkt w ostatnim kroku, a Fabryka Abstrakcyjna natychmiast. Budowniczych czsto uywa si do budowania obiektów Composite.

Creational Design Pattern: Prototype Specyfikuje rodzaje tworzonych obiektów, uywajc prototypowego egzemlarza, a take tworzy nowe obiekty, kopiujc ten prototyp.

Uzasadnienie stosowania: Edytor partytur muzycznych. ObiektGraficzny reprezentuje komponenty graficzne (np. nuty, piciolinia). Narzedzie definiuje narzdzia. NarzedzieGraficzne słuy do reprezentowania tych narzdzi, które tworz egzemplarze obiektów graficznych i dodaj je do dokumentu.

NarzedzieGraficzne jest czci zrbu, a klasy reprezentujce obiekty graficzne s jednym z moloiwych zastosowa. NarzedzieGraficzne nie wie jak tworzy egzemplarze klas muzycznych. Podklasy NarzedzieGraficzne nie sa rozwizaniem za duo podklas i za mało rónic. Naley sparametryzowa NarzedzieGraficzne klas ObiektGraficzny.

Narzedzie Operacja() +prototyp Obiek tgraficzny Klonuj() Rysuj(pozycja) NarzedzieObracajace NarzedzieGraficzne Pieciolinia Klonuj() Rysuj(pozycja) Nuta p = prototyp->klonuj() while(uzytkownik prz eciaga myszka){ p->rysuj(nowa pozycja) } wstaw p do rysunku CalaNut a Klonuj() Rysuj(pozy cja) PolNut a Klonuj() Rysuj(pozycja) return kopia siebie samego return kopia siebie samego

Co wicej, mona zmniejszy tu ilo klas zamiast mie oddzielne klasy dla rónych rodzajów nut moemy mie jedn klas inicjowan rónymi bitmapami i okresami trwania. Łatwiej te wtedy dodawa nowe nuty nie trzeba tworzy dla nich nowych klas.

Stosowalno: niezaleno systemu od sposobu tworzenia produktów, składania ich oraz reprezentowania oraz klasy, których egzemplarze tworzymy s specyfikowane w czasie wykonania lub uniknicie budowania hierarchii klas fabryk (tyle co produktów) lub stan obiektów klasy moe przyjmowa tylko jedn z kilku wartoci; klonowanie rónie zainicjowanych prototypów Struktura:

Klient Operacja() +prot otyp Prototyp Klonuj() p = prototyp->klonuj() PrototypKonk ret ny1 Klonuj() PrototypKonkretny2 Klonuj() return kopia siebie samego return kopia siebie samego

Uczestnicy: Prototyp (ObiektGraficzny) deklaruje interfejs klonowania PrototypKonkretny (Piciolinia, CałaNuta) implementuje operacj klonowania si Klient (Narzdzie Graficzne) tworzy nowy obiekt proszc prototyp o sklonowanie si

Współpraca: Klient prosi prototyp o sklonowanie si Konsekwencje: Podobne do konsekwencji AbstractFactory i Builder. Dodatkowo: dodawanie i usuwanie produktów w czasie wykonania programu Specyfikowanie nowych obiektów przez zmienianie wartoci

specyfikowanie nowych obiektów przez urozmaicanie struktury przykład podukładów elektronicznych zredukowana ilo podklas w porównaniu z FactoryMethod (#Tworca = #produkt); moemy nie mie hierarchii klasy Tworca dynamiczne konfigurowanie aplikacji za pomoc klas Główny problem wzorca to zapewnienie klonowania.

Implementacja: uywanie managera prototypów implementowanie operacji Klonuj() dyskusja kwestii kopii płytkich, głbokich, mieszanych, nawizanie do problemów z wzorcem Singleton (klonowanie i współbieno) inicjowanie klonów trudnoci z inicjowaniem stanu przekazywanego przez metod Klonuj(), bo zepsucie interfejsu. Zamiast tego sekwencja Klonuj(), Inicjuj(args)

Przykłady: Znane zastosowania: Pokrewne wzorce: Prototype i AbstractFactory rywalizuj, ale mona je łczy. Wzorzec AbstractFactory moe przechowywa zbiór prototypów, z których mog by klonowane produkty. Stosuje si dla Composite i Decorator.

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