Wzorce projektowe Michał Węgorek

Podobne dokumenty
Wzorce projektowe. dr inż. Marcin Pietroo

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

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Zaawansowane programowanie obiektowe - wykład 5

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

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

Zaawansowane programowanie w C++ (PCP)

Testowanie oprogramowania Wzorce projektowe

Wzorce projektowe i refaktoryzacja

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

Programowanie obiektowe

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

Wzorce projektowe. dr inż. Marcin Pietroo

Wprowadzenie do programowania aplikacji mobilnych

Technologia Programowania 2016/2017 Wykład 4

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Programowanie Zespołowe

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

Programowanie zorientowane obiektowo. Mateusz Kołecki

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

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

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

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


Programowanie obiektowe

Projektowanie obiektowe Wzorce projektowe

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

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

1) Wzorzec projektowy Adapter. Zastosowanie:

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

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

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

Programowanie w języku Java WYKŁAD

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

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

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

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

Wzorce projektowe [ wstęp ]

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

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe kreacyjne

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

Technologia Programowania 2016/2017 Wykład 5

Perspektywa obiektowości

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

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

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

Program szkolenia: Wzorce projektowe w C++

Spis treści. Wprowadzenie 15

Wzorce projektowe. dr Jarosław Skaruz

Programowanie obiektowe - 1.

Przykładowa implementacja

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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

Programowanie obiektowe

Zaawansowane programowanie w języku C++

Programowanie obiektowe

Technologie obiektowe

Analiza i projektowanie obiektowe w UML Kod przedmiotu

Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Scala - programowanie obiektowo-funkcyjne

PRZEWODNIK PO PRZEDMIOCIE

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

Wprowadzenie do systemów informacyjnych

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

E-ID1S-08-s5. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2011/2012

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

UML [ Unified Modeling Language ]

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

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

Wzorce projektowe. Wstęp

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

Decorator (dekorator)

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

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

Wypożyczalnia VIDEO. Technologie obiektowe

Wzorce projektowe / Eric Freeman [et al.]. Gliwice, cop Spis treści

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

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

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

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Programowanie obiektowe

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka

Modelowanie i Programowanie Obiektowe

Klasy abstrakcyjne i interfejsy

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Integracja komunikatora opartego o protokół XMPP z dużym portalem internetowym

Języki i techniki programowania Ćwiczenia 4 Wzorce

PRZEWODNIK PO PRZEDMIOCIE

Dokumentacja do API Javy.

E-1IZ3-06-s6. Inżynieria Programowania. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Programowanie współbieżne i rozproszone

dr Ilona Bluemke inż. Anna Stepień Instytut Informatyki Wydział Elektroniki i Technik Informacyjnych Politechnika Warszawska

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

Wykład 8: klasy cz. 4

Wprowadzenie do projektu QualitySpy

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Transkrypt:

Wzorce projektowe Michał Węgorek

Wzorce projektowe Plan prezentacji Co to jest i po co to jest? Podział Najczęściej spotykane wzorce Bibliografia

Co to jest i po co to jest? Wzorzec projektowy (ang. Design pattern) - uniwersalne, sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych problemów projektowych. Termin wzorzec projektowy - Kenta Becka - 1987, spopularyzowany w 1995 roku w książce Design Patterns autorstwa Gammy, Helma, Johnsona i Vlissidesa (zwanych zwykle "Bandą Czworga" lub "Bandą Czterech" - ang. Gang of Four). Czego się spodziewałem a co zastałem Po co wzorce precyzja, lepsze zrozumienie o czym mówimy, krótsza rozmowa, nie wymyślamy na nowo koła Rozmowa programistów: Do poradzenia sobie z problemem zmieniających się interfejsów dla zewnętrznych usług zastosujemy Adaptery generowane przez Singletonową Fabrykę

Czym są wzorce projektowe? Każdy wzorzec opisuje problem, który ciągle na nowo pojawia się w naszym otoczeniu i opisuje rdzeń jego rozwiązania w taki sposób, że można go używać milion razy i nigdy w ten sam sposób. (Christopher Alexander)

SZACHY Nauczyć się reguł gry. Nauczyć się, jakie ruchy wykonują poszczególne figury i jak kończy się partia gry. Nauczyć się techniki. Trzeba wiedzieć, jaka jest wartość poszczególnych figur, jak należy rozpoczynać partię (tzw. standardowe otwarcia) by przyniosło to jak najwięcej korzyści w przyszłości, jak się efektywnie bronić i jak przeprowadzać ataki. Nauczyć się wzorców gry, studiując rozegrane już partie. Nauczyć się ich używać w całkiem nowych sytuacjach powstałych podczas gry na szachownicy. PROGRAMOWANIE Nauczyć się reguł programowania. Nauczyć się języka programowania, jego składni. Nauczyć się techniki programowania. Wiedzieć, jakie są poszczególne struktury danych, kiedy je zastosować i w jaki sposób je stworzyć w danym języku programowania. Nauczyć się popularnych algorytmów, ich zalet i wad oraz metod implementacji. Nauczyć się wzorców, które sugerują, w jaki sposób należy rozwiązywać daną klasę problemów i w ten sposób pokonywać problemy, które mogą się pojawić przed nami w przyszłości.

Podział wzorców Konstrukcyjne -wykorzystuje się je do pozyskania obiektów zamiast bezpośredniego tworzenia instancji klasy -programy zyskują na elastyczności, gdyż można decydować, jaki typ obiektu ma zostać utworzony w danym przypadku Strukturalne -pomagają łączyć obiekty w większe struktury Behawioralne -charakteryzują sposób, w jaki klasy lub obiekty oddziaływują i dzielą odpowiedzialności

Podział wzorców GoF PRZEZNACZENIE KONSTRUKCYJNE STRUKTURALNE BEHAWIORALNE Metoda wytwórcza Adapter Interpreter Metoda szablonowa Budowniczy Fabryka abstrakcyjna Prototyp Singleton Adapter Most Kompozyt Dekorator Fasada Pełnomocnik Pyłek Łańcuch zobowiązań Polecenie Iterator Mediator Pamiątka Obserwator Stan Strategie Odwiedzający

Dekorator

Dekorator opakowanie oryginalnej klasy w nową klasę "dekorującą" oryginalny obiekt przekazany jako parametr konstruktora dekoratora metody dekoratora wywołują metody oryginalnego obiektu i dodatkowo implementują nową funkcjonalność alternatywa dla dziedziczenia - rozszerza zachowanie klasy w trakcie działania programu

Dekorator

Dekorator

Dekorator Stosowalność -aby dynamicznie i w przezroczysty sposób dodawać zobowiązania do pojedynczych obiektów -w wypadku zobowiązań które mogą być cofnięte -gdy rozszerzanie przez definiowanie podklas jest niepraktyczne (dużo niezależnych rozszerzeń które przy próbie uwzględnienia każdej ich kombinacji prowadzą do ogromnej liczby podklas)

Fasada

Fasada Problem: Potrzebny jest wspólny, jednorodny interfejs do zbioru implementacji lub interfejsów (np. w ramach podsystemu). Chcemy ograniczyć niepożądane sprzężenie ze składnikami podsystemu oraz zabezpieczyć się przed jego zmianami. Rozwiązanie: Zdefiniuj pojedynczy kontrakt dla całego podsystemu obiekt fasadę, który opakowuje podsystem. Przykład

Fasada - korzyści ukrywanie złożoności tworzonego przez siebie systemu przez dostarczenie udokumentowanego, publicznego API. Korzyścią z zastosowania w tym przypadku fasady jest to, że programiści korzystający z systemu muszą przyswoić sobie tylko API fasady a nie wszystkich obiektów systemu. uproszczenie używania cudzej biblioteki programistycznej przez zdefiniowanie wygodnych i dostosowanych do konkretnego zastosowania metod pośredniczących między systemami. Ubocznym skutkiem takiego uproszczenia jest zwiększenie czytelności swojego kodu. W ogólności wzorzec fasady pozwala wykorzystać podzbiór możliwości skomplikowanego systemu w prostszy, specyficzny dla danego zastosowania sposób.

Pełnomocnik

Pełnomocnik - korzyści dodatkowy poziom pośredniości dostępu do obiektu, może: -ukryć fakt, że obiekt jest zdalny -wykonywać optymalizacje jak tworzenie obiektu na żądanie -ukrywanie np. kopiowania-przy-zapisywaniu,odłożenie na później kopiowania obiektu, będzie on rzeczywiście skopiowany tylko, jeśli użytkownika tego zażąda

Adapter

Adapter Rozwiązuje problem niezgodnego interfejsu Pozwala na współprace klas, które nie mogą współpracować ze względu na interfejs Przykład: Zapisujemy liczby, a ten kto używa naszej klasy żądą true/false

Metoda fabrykująca

Metoda fabrykująca Jeśli proces tworzenia obiektu jest złożony (np. zależy od ustawień konfiguracyjnych lub wejścia użytkownika), należy użyć metody fabrykującej:

Fabryka abstrakcyjna

Fabryka abstrakcyjna Enkapsulacja grupy metod fabrykujących dotyczących tego samego zagadnienia.

Fabryka abstrakcyjna

Fabryka abstrakcyjna

Singleton

Singleton JAVA 5

Singleton-Bill Pugh Równoważne ostatniemu, ale działa we wszystkich wersjach Javy, obecnie zalecana wersja. Nie wymaga specjalnych konstrukcji (volatile/synchronized).

Strategia

Strategia Problem: Jak w projekcie uwzględnić różnorodne, ale powiązane algorytmy lub strategie? Jak zapewnić łatwą możliwość ich zmiany? Rozw.: Wszystkie algorytmy/strategie zdefiniuj w oddzielnych klasach o wspólnym interfejsie.

Strategia

Dziękuję

Bibliografia http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/images/pattern_map.jpg - strona tytułowa Wikipedia, fragmenty kodu pochodza w wikipedii http://en.wikipedia.org/wiki/facade_pattern http://en.wikipedia.org/wiki/decorator_pattern http://en.wikipedia.org/wiki/adapter_pattern http://en.wikipedia.org/wiki/singleton_pattern http://en.wikipedia.org/wiki/abstract_factory_pattern http://en.wikipedia.org/wiki/factory_method_pattern http://en.wikipedia.org/wiki/proxy_pattern http://en.wikipedia.org/wiki/strategy_pattern www.mcdonaldland.info/files/designpatterns/designpatternscard.pdf - grafiki wprowadzające opis każdego wzorca projektowego Inżynieria oprogramowania 2007 wykład 11 Jacek Sroka Gamma, Helm, Johnson, Vlissides Wzorce projektowe, WNT 2005.