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

Podobne dokumenty
Wzorce projektowe. dr inż. Marcin Pietroo

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

Testowanie oprogramowania Wzorce projektowe

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

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

Technologia Programowania 2016/2017 Wykład 4

Programowanie obiektowe

Zaawansowane programowanie w C++ (PCP)

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Wypożyczalnia VIDEO. Technologie obiektowe

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

1) Wzorzec projektowy Adapter. Zastosowanie:

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

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

Decorator (dekorator)

Wzorce projektowe i refaktoryzacja

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

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

Wprowadzenie do programowania aplikacji mobilnych

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

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

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

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

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie w języku Java WYKŁAD

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Wzorce projektowe Michał Węgorek

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

Projektowanie obiektowe Wzorce projektowe

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

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

Wzorce oprogramowania Gof. zastosowane w modelu obiektowym

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

Zaawansowane programowanie obiektowe - wykład 5

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (2) Wykład 10 Inversion of Control Wiktor Zychla 2013

Technologie obiektowe

Projektowanie obiektowe oprogramowania Wykład 7 wzorce czynnościowe (2) Wiktor Zychla 2018

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

Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014

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

Wzorce projektowe strukturalne cz. 1

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

Podstawy Programowania Obiektowego

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie obiektowe

Technologie i usługi internetowe cz. 2

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

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

UML [ Unified Modeling Language ]

Technologia Programowania 2016/2017 Wykład 5

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

Wykład 1 Inżynieria Oprogramowania

Builder (budowniczy) Cel: Przykład:

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

UML a kod. C++, Java i C#

Modelowanie i Programowanie Obiektowe

Rok akademicki: 2014/2015 Kod: IEL s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Program szkolenia: Wzorce projektowe w C++

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Technologia programowania

Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design

Przykładowa implementacja

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

Projektowanie Aplikacji Internetowych Jarosław Kuchta. Wzorce projektowe warstwy biznesowej

Programowanie obiektowe - 1.

Programowanie obiektowe

Wprowadzenie do systemów informacyjnych

Programowanie Zespołowe

Programowanie Obiektowe i C++

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Programowanie obiektowe

Programowanie obiektowe

Wzorce projektowe. Wstęp

Wywoływanie metod zdalnych

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

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Pojęcie wzorca projektowego Sposób opisu wzorców projektowych Notacja UML podstawowe diagramy zapisu wzorców projektowych

Projektowanie obiektowe oprogramowania Wykład 4 - SOLID GRASP Wiktor Zychla 2012

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wywoływanie metod zdalnych

Diagramy klas. dr Jarosław Skaruz

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

Design Pattern Density Defined

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie obiektowe

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

Wzorce projektowe [ wstęp ]

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

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Aplikacje RMI

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2017

PARADYGMATY PROGRAMOWANIA Wykład 4

Polimorfizm. dr Jarosław Skaruz

Transkrypt:

Projektowanie obiektowe oprogramowania Wykład 5 wzorce strukturalne Wiktor Zychla 2016 1 Wzorce strukturalne 1.1 Facade Motto: uproszczony interfejs dla podsystemu z wieloma interfejsami class SmtpFacade { public void Send( string From, string To, string Subject, string Body, Stream Attachment, string AttachmentMimeType ); } 1.2 Read-only interface Motto: interfejs do odczytu dla wszystkich, a do zapisu tylko dla wybranych

class Readonly interface ReadOnlyClient «interface» ReadOnlyInterface + getattribute1() : void + getattribute2() : void MutableInterface + getattribute1() : void + getattribute2() : void + setattribute1() : void + setattribute2() : void MutatorClient Przykład: ReadOnlyCollection, AsReadOnly() 1.3 Flyweight Motto: Efektywne zarządzanie wieloma drobnymi obiektami Kojarzyć: Object Pool + immutable + bardzo dużo danych zapamiętać przykład z wykładu Board vs Checker Flyweight w implementacji przypomina Object Pool. Różnica jest taka, że Pool utrzymuje pulę rozłącznych obiektów, zwraca za każdym razem inną instancję, a po użyciu instancja ta wraca do puli. Motywacją dla Object Pool jest bardzo kosztowne tworzenie instancji. W przypadku Flyweight jest inaczej motywacją dla tego wzorca jest bowiem chęć oszczędzania pamięci w sytuacji, gdy do utworzenia jest naprawdę duża liczba potencjalnych obiektów, zbyt duża żeby reprezentować je w sposób klasyczny. FlyweightFactory utrzymuje więc dużo mniejszą pulę obiektów taką, w której wyznacznikiem tożsamości obiektu jest stan, który można współdzielić między rzekomo różnymi instancjami. Klient dostaje wiele obiektów, a w rzeczywistości za każdym razem kiedy prosi o obiekt o tym samym kluczu, dostaje tę samą instancję.

Takie podejście rodzi oczywiście problem identyfikacji takiej części stanu obiektu która może być współdzielona (intrinsic) i takiej która nie może być współdzielona (extrinsic) i jej przechowaniem w optymalny dla pamięci sposób zajmuje się albo FlyweightFactory albo jeszcze inny obiekt. Na przykład (przykład z wykładu) wyobraźmy sobie planszę do gry w warcaby o wymiarach 1mln na 1mln pól. Gdyby taka plansza była zaimplementowana tak, żeby utrzymywać instancje obiektów bierek dla każdego pola planszy, zużycie pamięci byłoby ogromne. Zamiast tego, w klasie planszy reprezentacja stanu planszy jest jakaś optymalna (na przykład za pomocą tablicy bajtów). Ale klient nadal potrzebuje obiektu bierki, chociażby po to żeby wywołać na nim metody do rysowania. Tu wkracza Flyweight. Okazuje się, że z punktu widzenia silnika graficznego, bierki są tak naprawdę dwie różne biała i czarna. FlyweightFactory (może być osobną klasą, a może to być sama klasa planszy) zapamiętuje więc tylko dwie różne instancje klasy bierki, każda z nich ma zapamiętaną tę współdzieloną (intrinsic) część stanu (tu: kolor). Reszta stanu (extrinsic), czyli np. pozycja na planszy, przychodzi z zewnątrz, tu: z klasy planszy. Metoda do rysowania bierki będzie więc miała parametr do przekazania tego zewnętrznego, niewspółdzielonego stanu. 1.4 Decorator Motto: Dynamicznie rozszerzanie odpowiedzialności obiektów (alternatywa dla podklas) Kojarzyć: System.IO.Stream.Stream 1.5 Proxy Motto: substytut (zamiennik) obiektu w celu sterowania dostępem do niego Proxy zdalne reprezentant lokalny obiektu zdalnego Proxy wirtualne tworzy kosztowny obiekt na żądanie Proxy ochraniające kontroluje dostęp do obiektu Proxy logujące loguje dostęp do obiektu

Przykład virtual proxy z biblioteki standardowej.net - Lazy<T>. Uwaga! Struktura Proxy i Decoratora może wydawać się podobna. Różnice są następujące: Każdy z Decoratorów może dodawać nowe, specyficzne dla siebie operacje/informacje; Proxy nigdy nie zmienia (nie rozszerza) interfejsu obiektu Proxy z zasady nie jest przeznaczone do stosowania rekursywnego; Dekorator przeciwnie 1.6 Adapter Motto: uzgadnianie niezgodnych interfejsów class Adapter Client «interface» ITarget + TheMethod() : void Adapter + TheMethod() : void Adaptee + OtherMethod() : void

1.7 Bridge Motto: SRP + ISP + DIP dla hierarchii obiektowej o dwóch stopniach swobody; oddzielenie abstrakcji od implementacji 1.8 Composite Motto: składanie obiektów w struktury drzewiaste Kojarzyć: Tree, Expression 2 Literatura [1] Gamma, Helm, Johnson, Vlissides Wzorce projektowe [2] Martin, Martin Zasady, wzorce I praktyki zwinnego wytwarzania oprogramowania w C# [3] Grand, Merrill Wzorce projektowe [4] Freeman, Freeman, Sierra, Bates Head First Design Patterns

[5] http://www.oodesign.com