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

Podobne dokumenty
Wzorce projektowe. dr inż. Marcin Pietroo

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Projektowanie obiektowe Wzorce projektowe

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

Wypożyczalnia VIDEO. Technologie obiektowe

1) Wzorzec projektowy Adapter. Zastosowanie:

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

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

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

Wzorce projektowe Michał Węgorek

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

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

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

Wprowadzenie do programowania aplikacji mobilnych

Wzorce projektowe. dr inż. Marcin Pietroo

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

Zaawansowane programowanie obiektowe - wykład 5

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

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

Zaawansowane programowanie w C++ (PCP)

Przykładowa implementacja

Analiza i projektowanie aplikacji Java

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Programowanie w języku Java WYKŁAD

Historia modeli programowania

Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne

Zagadnienia projektowania aplikacji J2EE

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

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

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

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

Wzorce projektowe. dr inż. Marcin Pietroo

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

Builder (budowniczy) Cel: Przykład:

Testowanie oprogramowania Wzorce projektowe

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

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Technologia Programowania 2016/2017 Wykład 4

Wprowadzenie do systemów informacyjnych

Programowanie obiektowe

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Wykład 1 Inżynieria Oprogramowania

Programowanie obiektowe - 1.

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

Programowanie obiektowe

K_W04 K_W04 K_W04. Opis

Projektowanie logiki aplikacji

Wzorce projektowe i refaktoryzacja

Paweł Kurzawa, Delfina Kongo

Interfejsy i klasy wewnętrzne

Programowanie obiektowe. Grzegorz Jabłoński Katedra Mikroelektroniki i Technik Informatycznych (K-25) Budynek B18

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

Technologia Programowania 2016/2017 Wykład 5

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Programowanie obiektowe

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

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

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

Programowanie obiektowe

OSGi Agata Hejmej

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Programowanie obiektowe

Modelowanie i Programowanie Obiektowe

Wprowadzenie. Dariusz Wawrzyniak 1

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

Programowanie obiektowe

Wykład 1: Wprowadzenie

WYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Wzorce logiki dziedziny

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

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

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

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

Web frameworks do budowy aplikacji zgodnych z J2EE

Modelowanie. Wykład 1: Wprowadzenie do Modelowania i języka UML. Anna Kulig

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

Wzorce projektowe. Wstęp

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

Technologie obiektowe

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

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

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

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Wzorce projektowe kreacyjne

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

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

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Forum Client - Spring in Swing

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

Diagramy klas. dr Jarosław Skaruz

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja do API Javy.

Perspektywa obiektowości

Transkrypt:

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

Roadmap Adapter Bridge Composite Facade 2

Pojęcia obiekt interfejs typ klasa 3

Co to jest delegacja? Po prostu: przekazywanie (delegowanie) żądania (operacji) przez obiekt odbierający komunikat do realizacji przez inny obiekt (tzw. delegat) Zwiększenie ponownego użycia poprzez zastosowanie agregacji zamiast dziedziczenia 4

Wzorce strukturalne Wzorce interfejsów wzorce strukturalne dotyczą powszechnych sposobów organizacji obiektów różnego typu, aby mogły współpracować ze sobą. wzorce interfejsów (adapter, bridge, composite, facade) dotyczą problemów wymagających zdefiniowania lub przedefiniowania dostępu do klasy lub grup klas 5

Adapter Zaadoptowanie istniejącego interfejsu klasy do postaci oczekiwanej przez klienta. 6

Adapter - Problem Niepowiązane klasy, komponenty rozwijane w różnym czasie lub równolegle mają ze sobą współpracować. Dobry program, do którego kodu nie mamy dostępu, ma działać i być odpowiednio wykorzystany. Niekompatybilny interfejs. Problem niezgodności impedancji (impedance mismatch). 7

Adapter - Rozwiązanie Osłaniamy istniejący kod nowymi interfejsami. Dopasowujemy impedancje starych komponentów do nowego systemu (często rozwiązanie pozorne! tj. jak przyszycie starej łaty do nowych spodni) Struktura: Osłona/Delegacja. 8

Adapter diagram klas 9

Adapter diagram klas (przykład) 10

Adapter przykład 11

Adapter - Konsekwencje Klient i adaptowany komponent (klasa, metoda, itp.) pozostają niezależne. Można używać klas adaptera do określenia jaka metoda obiektu ma być wywołana przez klienta (np. jeden adapter wywołuję metodę rysującą linię ciągłą, a drugi wywołuję metodę rysującą linię przerywaną) Adapter dodaje warstwę pośrednią w programie: negatywny wpływ na wydajność, trudność zrozumienia aplikacji. 12

Bridge wprowadzenie do problemu 13

Bridge Oddzielenie operacji abstrakcyjnych od ich implementacji w celu umożliwienia wprowadzenia w nich niezależnych zmian Użyteczny, gdy mamy do czynienia z hierarchią abstrakcji i odpowiadającą hierarchią implementacji, w celu ich rozłączenia. 14

Bridge - Problem Brak odseparowania implementacji od interfejsu. Potrzeba poprawienia możliwości rozbudowy klas, zarówno implementacji, jak i interfejsu (m.in. przez dziedziczenie), Potrzeba ukrycia implementacji od klienta, w celu umożliwienia zmiany implementacji bez zmian interfejsu Kilka odpowiednich abstrakcji ma korzystać z tej samej implementacji 15

Bridge - Rozwiązanie Pozwolenie na zmiany implementacji oraz pozostawienie stabilnego interfejsu. Struktura: Osłona/Delegacja osłona to hierarchia, która dostarcza interfejs delegacja to hierarchia, która ukrywa bagaż implementacji Izolacja: koperta/list, (więcej niż enkapsulacja) 16

Bridge przykład (szeregowanie wątków) 17

Bridge diagram klas np. sterowniki urządzeń i baz danych 18

Bridge - Konsekwencje Bridge utrzymuje niezależność między klasami reprezentującymi abstrakcje i dostarczającymi implementacje abstrakcji. Abstrakcja i jej implementacje mają osobną hierarchie klas, które można rozszerzać bez wzajemnego wpływu. Można mieć wiele klas implementujących dla abstrakcyjnej klasy lub wiele abstrakcji używających tej samej implementacji. Obiekty abstrakcji mogą zmieniać implementacje bez wpływu na klienta. 19

Konfiguracja na przykładzie Spring Framework Inversion of Control (Hollywood Princilple) "don't call us, we will call you. Framework konfiguruje aplikacje i woła komponenty użytkowe. To tak na dobrą sprawę odróżnia framework od biblioteki. Depencendy Injection zmniejszenie zależności pomiędzy komponentami tylko do interfejsów. 20

21

Composite Zdefiniowanie interfejsu uwzględniającego zarówno pojedyncze obiekty, jak i grupy obiektów. Umożliwienie odnoszenia się tak samo do pojedynczych obiektów, jak do kompozytów 22

Composite - Problem Dekompozycja złożonego obiektu na hierarchię obiektów część-całość Klient nie powinien rozróżniać między kompozycją wielu obiektów, a pojedynczym obiektem. Wiele różnych obiektów jest używanych w podobny sposób i mają prawie identyczny kod obsługi. 23

Composite - Rozwiązanie Zastosowanie rekursywnej kompozycji. Agregacja 1 do wielu: składa się w górę hierarchii dziedziczenia. 24

Composite diagram klas 25

Composite diagram klas (przykład) 26

Composite przykład 27

Composite - Konsekwencje Udostępnienie wspólnego interfejsu do obiektów składających się na drzewiastą strukturę. Klienta nie musi interesować hierarchia komponentów. Komponenty mogą rekurencyjnie delegować przetwarzanie żądanie klienta w dół lub górę hierarchii. Konkretne komponenty mogą implementować własne unikalne operacje (ale dla uproszczenia można je przesuwać do klas ogólniejszych) Dowolna klasa wzorca Composite może być dzieckiem obiektu kompozytu. Wprowadzenie zaostrzonych reguł wymaga kodu świadomego występujących typów. 28

Facade Udostępnienie prostego interfejsu ułatwiającego korzystanie z zestawu klas lub podsystemu. Dostarczenie jednego obiektu na zewnątrz w celu umożliwienia komunikacji z zestawem klas. 29

Facade - Problem Istnieje wiele zależności między klasami implementującymi abstrakcje i klasami klienta, zwiększając zauważalnie jego złożoność. Potrzeba uproszczenia klienta (np. zmniejszenie ryzyka błędów). Zwiększenie stopnia ponownego użycia systemu lub biblioteki. Zaprojektowanie klas by działały w jasno odseparowanych warstwach. 30

Facade - Rozwiązanie Osłonienie istniejącego systemu nowym interfejsem. Prosty punkt wejścia dla dużego podsystemu. Dodanie warstwy pośredniczącej ukrywającej złożoność spadkowego systemu (legacy) 31

Facade diagram klas 32

Facade przykład 33

Facade przykłady Java klasa JOptionPane pakietu javax.swing C# - klasa MessageBox pakietu System.Windows.Forms 34

Facade - Konsekwencje Wstawienie klas fasady upraszcza klasy klienta przesuwając zależności z klienta do fasady. Klient nie musi znać klas za fasadą. Zmiana implementacji (np. poprawa) klas znajdujących się za fasadą, czyli tych, które implementują abstrakcje, jest możliwa bez wpływu na kod klienta. 35

Zależności między wzorcami Umożliwienie wykorzystania elementów: już gotowych Adapter, przed ich powstaniem Bridge. Interfejs: nowy, całkowicie zdefiniowany Facade. stary, ponowne użycie Adapter. 36