Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

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

Projektowanie obiektowe Wzorce projektowe

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

Zaawansowane programowanie w C++ (PCP)

Wzorce projektowe. dr inż. Marcin Pietroo

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

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

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

Programowanie w języku Java WYKŁAD

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

Wypożyczalnia VIDEO. Technologie obiektowe

Wprowadzenie do programowania aplikacji mobilnych

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

Wzorce projektowe Michał Węgorek

Technologia Programowania 2016/2017 Wykład 4

Programowanie obiektowe

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

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

Program szkolenia: Wzorce projektowe w C++

Wzorce projektowe. dr inż. Marcin Pietroo

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Decorator (dekorator)

Testowanie oprogramowania Wzorce projektowe

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

Wzorce projektowe i refaktoryzacja

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Zaawansowane programowanie obiektowe - wykład 5

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

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

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

Wzorce projektowe. dr inż. Marcin Pietroo

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

Modelowanie i Programowanie Obiektowe

Technologia Programowania 2016/2017 Wykład 5

Adaptywny kod : zwinne programowanie, wzorce projektowe i SOLID-ne zasady / Gary McLean Hall. Gliwice, cop Spis treści

Programowanie obiektowe

UML [ Unified Modeling Language ]

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

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

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

Programowanie obiektowe

UML cz. II. UML cz. II 1/38

Programowanie obiektowe

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

PRZEWODNIK PO PRZEDMIOCIE

Programowanie i projektowanie obiektowe

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

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

1) Wzorzec projektowy Adapter. Zastosowanie:

Programowanie obiektowe

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Wprowadzenie do systemów informacyjnych

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

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

UML w Visual Studio. Michał Ciećwierz

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

Komentarz. W poszukiwaniu zaginionego wzorca

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

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.


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

Programowanie obiektowe

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

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

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

Zaawansowane programowanie w C++ (PCP)

Technologie obiektowe

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

Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design

Rysunek 1: Przykłady graficznej prezentacji klas.

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

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

Podstawy programowania III WYKŁAD 4

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Wzorce projektowe. Wstęp

Rok akademicki: 2012/2013 Kod: IET SW-s Punkty ECTS: 3. Kierunek: Elektronika i Telekomunikacja Specjalność: Systemy wbudowane

Command (action, transaction, polecenie)

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Spis treści. Wprowadzenie 15

Projektowanie logiki aplikacji

Programowanie obiektowe - 1.

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Wykład 1: Wprowadzenie

Struktury Danych i Złożoność Obliczeniowa

Zagadnienia projektowania aplikacji J2EE

Wykład 5. Inżynieria oprogramowania MIS s MIO s MIS n Listopad 2014

Wzorce projektowe kreacyjne

Programowanie MorphX Ax

Specyfikowanie wymagań przypadki użycia

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

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

Ochrona zasobów. mechanizm ochrony polityka ochrony. 2. Domeny ochrony 3. Macierz dostępów 4. Implementacja macierzy dostępów

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Transkrypt:

Projektowanie obiektowe Wzorce projektowe Gang of Four Wzorce rozszerzeń 1

Roadmap Decorator Iterator Visitor 2

Wzorce rozszerzeń Mają na celu uczynić proces rozszerzania kodu bardziej czytelnym, prostym i dostępnym 3

Decorator* Umożliwia programistom dynamiczne tworzenie zachowania obiektów. *GoF - wzorzec strukturalny 4

Decorator problem Potrzebujemy rozszerzyć zachowanie klasy, ale istnieją powody, dla których nie chcemy korzystać z dziedziczenia. Potrzebujemy dodać zachowanie lub stan do wybranych obiektów w czasie-wykonania, a dziedziczenie jest nieodpowiednie z powodu statyczności i faktu, że dotyczy całej klasy. 5

Decorator rozwiązanie Stosujemy rekursywną kompozycję. Agregacja 1 do 1: składa się w górę hierarchii dziedziczenia. Wprowadzamy pojedynczy rdzeniowy obiekt osłonięty przez możliwie wiele opcjonalnych obiektów. 6

Decorator diagram klas 7

Decorator diagram klas https://tylercash.xyz/post/a-look-at-decorator-patterns 8

Decorator przykład 9

Decorator konsekwencje Dostarcza większą elastyczność niż dziedziczenie. Wykorzystując różne kombinacje osłon, tworzy się wiele różnych kombinacji zachowań. Mniejsza liczba klas, kosztem większej liczby obiektów. Elastyczność osłon zwiększa ryzyko błędów. Trudno jest ustalić tożsamość obiektu, bo właściwe obiekty są za osłonami. 10

Zależności między wzorcami Dostarczany interfejs jest: inny adapter, ten sam proxy, rozszerzony decorator. Decorator i proxy mają inne zastosowanie, ale podobne struktury (warstwa pośrednicząca). Decorator pozwala zmienić skórę obiektu, a strategy bebechy. 11

Zależności między wzorcami Composite i decorator za pomocą rekursywnej kompozycji organizują dowolną liczbę obiektów. Decorator może być postrzegany jako zdegenerowany composite, z jednym komponentem, ale jego celem nie jest agregacja. Decorator i composite są używane razem, bo się uzupełniają. 12

Iterator* Udostępnia sposób sekwencyjnego dostępu do elementów kolekcji *GoF - wzorzec behawioralny 13

Iterator problem Potrzebujemy ujednolicić mechanizm przechodzenia (przeglądania) wysoce rożnych struktur danych, tak aby można było zdefiniować algorytmy zdolne do przezroczystego wzajemnego oddziaływania z każdą z nich. 14

Iterator rozwiązanie Stosujemy polimorfizm do przemierzania (iterowania). Przemierzanie kolekcji awansuje do statusu pełnego objektu. 15

Iterator diagram klas 16

Iterator konsekwencje Jest możliwy dostęp do kolekcji obiektów bez znajomości źródła obiektów. Używając wielu obiektów iteratorów, jest łatwo posiadać i zarządzać wieloma przemierzeniami naraz. Klasa kolekcji może dostarczać różne rodzaje iteratorów by przemierzać kolekcje w różny sposób. (np. klucze i wartości indeksów) 17

Visitor GoF - wzorzec behawioralny. Umożliwia programistom zdefiniowanie nowej operacji dla hierarchii bez konieczności zmiany klas zawartych w tej hierarchii. 18

Visitor problem Wiele różnych i niezwiązanych operacji trzeba przeprowadzić na obiektach węzłowych w heterogenicznej złożonej strukturze, ale: Chcemy uniknąć zanieczyszczania klas węzłowych w te operacje. Nie chcemy wykonywać sprawdzenia typu każdego węzła i rzutować wskaźnik do właściwego typu przed wykonaniem pożądanej operacji. 19

Visitor rozwiązanie Podwójne rozdzielenie (double dispatch). Wybór wykonywanej operacji należy uzależnić od typu dwóch obiektów. Implementacja mechanizmu umożliwiającego dodawanie operacji do istniejącej hierarchii. 20

Visitor diagram klas (double dispatch) 21

Visitor diagram klas 22

Visitor przykład 23

Visitor konsekwencje Ułatwia dodawanie nowych operacji na strukturze obiektów. Konkretne instancje klas struktury nie mają zależności z klasami visitora. Logika nowej operacji jest umieszczona w jednej spójnej klasie tzn. konkretnej implementacji visitora. Jednie obiekt visitora przechowuje stan potrzebny do wykonania operacji na strukturze obiektów. Dodanie nowej konkretnej klasy do struktury obiektów wymaga rozbudowy każdego istniejącego visitora. Klasy struktury muszą udostępnić visitorowi odpowiedni dostęp do ich stanu do przeprowadzenia operacji. 24

Zależności między wzorcami iterator może przemierzać composite visitor może wykonywać operację na composite visitor jest silniejszy niż command ponieważ może uruchamiać odpowiednią operację dla napotkanego rodzaju obiektu. 25

Podobieństwo strukturalne wzorców wrapper, delegacja, agregacja 26

Podobieństwo strukturalne wzorców hierarchia dziedziczenia 27

Podobieństwo strukturalne wzorców osłona hierarchii dziedziczenia 28

Podobieństwo strukturalne wzorców rekursywna kompozycja 29

Podobieństwo strukturalne wzorców status pełnoprawnego obiektu 30