Wzorce projektowe. dr inż. Marcin Pietroo

Podobne dokumenty
Zaawansowane programowanie obiektowe - wykład 5

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo

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

Wprowadzenie do programowania aplikacji mobilnych

Zaawansowane programowanie w C++ (PCP)

Programowanie obiektowe

Wypożyczalnia VIDEO. Technologie obiektowe

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

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

Projektowanie obiektowe Wzorce projektowe

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

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

Technologia Programowania 2016/2017 Wykład 5

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

1) Interpreter. Idea. Struktura. Uczestnicy

Testowanie oprogramowania Wzorce projektowe

Programowanie obiektowe

Programowanie współbieżne i rozproszone

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

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Wzorce projektowe. Wstęp

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

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

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

Wzorce projektowe Michał Węgorek

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Programowanie obiektowe - 1.

WYKŁAD 11. Wzorce projektowe czynnociowe Iterator TemplateMethod

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

Builder (budowniczy) Cel: Przykład:

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

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

OBSŁUGA ZDARZEO, ALARMÓW, NASTAW I FUNKCJI KONTROLNYCH W PROGRAMIE OBSŁUGI INTERFEJSU 61850

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

1) Wzorzec projektowy Adapter. Zastosowanie:

Template method (metoda szablonowa)

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne

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

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

Algorytmy i Struktury Danych. Anna Paszyńska

Przykładowa implementacja

Technologia Programowania 2016/2017 Wykład 4

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

Command (action, transaction, polecenie)

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

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

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

Historia modeli programowania

Aplikacje RMI

Programowanie obiektowe


Klasy abstrakcyjne, interfejsy i polimorfizm

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie i projektowanie obiektowe

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

Programowanie obiektowe

Programowanie obiektowe

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Wprowadzenie do szablonów szablony funkcji

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

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

Wprowadzenie do szablonów szablony funkcji

Paweł Kurzawa, Delfina Kongo

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Interfejsy i klasy wewnętrzne

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Szablony funkcji i klas (templates)

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

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

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

Programowanie obiektowe

Programowanie Komponentowe WebAPI

Tabela wewnętrzna - definicja

Struktury Danych i Złożoność Obliczeniowa

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

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

Programowanie zespołowe

76.Struktura oprogramowania rozproszonego.

Zaawansowane programowanie w C++ (PCP)

WYKŁAD 9. Wzorce projektowe czynnociowe Observer Visitor

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

Wzorce logiki dziedziny

Aplikacje w środowisku Java

Design Pattern Density Defined

Programowanie Zespołowe

Szablony funkcji i szablony klas

Serwery Statefull i Stateless

Język C++ Programowanie obiektowe

Aplikacje Internetowe

Transkrypt:

Wzorce projektowe dr inż. Marcin Pietroo

Iterator czynnościowy wzorzec projektowy (obiektowy), którego celem jest zapewnienie sekwencyjnego dostępu do podobiektów zgrupowanych w większym obiekcie (np. STL, mogą byd iteratory nie sekwencyjne)

State czynnościowy wzorzec projektowy, który umożliwia zmianę zachowania obiektu poprzez zmianę jego stanu wewnętrznego. Uzależnia sposób działania obiektu od stanu w jakim się aktualnie znajduje.

State

State zastosowanie np. gdy w zależności w jakim środowisku pracujemy (np. system operacyjny) stosujemy dla obiektów inne algorytmy za pomocą wzorca State można zrelaizowad Strategy

Strategy Definiuje rodzinę wymiennych algorytmów i kapsułkuje je w postaci klas. Umożliwia wymienne stosowanie każdego z nich w trakcie działania aplikacji niezależnie od korzystających z nich klientów. We wzorcu Strategia definiujemy wspólny interfejs dla wszystkich obsługiwanych algorytmów i zawierający wszystkie dozwolone operacje. Implementujemy interfejs w poszczególnych klasach dostarczających konkretne algorytmy. We wzorcu wyróżniamy także klienta korzystającego z algorytmów. Posiada on referencję do aktualnie używanej strategii oraz metodę, która pozwala zmienid strategię. Elementy wzorca: Strategia interfejs definiujący operacje, które muszą obsługiwad wszystkie dostępne algorytmy. Wszyscy klienci zainteresowani wykorzystaniem algorytmów będą używad właśnie tego interfejsu. Konkretna strategia implementuje określony algorytm zgodnie ze zdefiniowanym interfejsem. Klient użytkownik rodziny algorytmów posiadający referencję do obiektu Strategia.

Strategy

Strategy Zalety: wzorzec pozwala na ścisłe, formalne zdefiniowanie rozszerzalnych rodzin algorytmów dzięki wprowadzeniu interfejsu Strategia, eliminacja instrukcji warunkowych, umożliwia wybór implementacji algorytmy mogą rozwiązywad ten sam problem, lecz różnid się uzyskiwanymi korzyściami (zużycie pamięci, złożonośd obliczeniowa, optymalizacja pod kątem pewnych szczególnych przypadków). możliwośd niezależnego testowania klientów i strategii Wady: koszt komunikacji między klientem a strategią (wywołania metod, przekazywanie danych), zwiększenie liczby obiektów.

Visitor zadaniem jest odseparowanie algorytmu od struktury obiektowej na której operuje. Praktycznym rezultatem tego odseparowania jest możliwośd dodawania nowych operacji do aktualnych struktur obiektów bez konieczności ich modyfikacji. wprowadzony zostaje nowy typ obiektu Wizytator, którego zadaniem jest "odwiedzenie" każdego elementu w danej strukturze obiektów i wykonanie na nim konkretnych działao. Różne implementacje wizytatorów mogą wykonywad różne zadania, rozszerzając funkcjonalnośd struktury elementów bez ich wewnętrznej modyfikacji

Visitor

Visitor Każdy odwiedzający jest "przyjmowany" przez dany element poprzez metodę Accept - dla poszczególnych implementacji obiektów Element, wołane są odpowiednie metody Visit w interfejsie Visitor odwiedzającego Wzorzec wizytatora może byd zastosowany przy implementacji drzewa wyprowadzenia w parserach lub kompilatorach (BCEL, ANTLR itd.) Aby wykonad szereg operacji na całym drzewie, trzeba dla każdego z węzłów drzewa zaimplementowad metody wykonujące konkretne zadania. Utrzymanie i stworzenie tak rozwiniętego kodu dla każdej z klas reprezentujących węzeł w drzewie może byd dośd skomplikowane. Aby uniknąd takich sytuacji, można wykorzystad wzorzec wizytatora.

Observer Używany jest do powiadamiania zainteresowanych obiektów o zmianie stanu pewnego innego obiektu. W programowaniu obiektowym obiekty posiadają pewien stan, tj. zbiór aktualnych wartości pól obiektu, który w wyniku wykonywania na nich operacji może ulegad zmianie. Od bieżącego stanu obiektu mogą byd zależne inne obiekty, dlatego musi istnied możliwośd ich powiadomienia o jego zmianie tak, aby mogły one się do niej dostosowad.

Observer We wzorcu obserwator wyróżniamy dwa podstawowe typy obiektów: obserwowany (ang. observable, subject) - obiekt, o którym chcemy uzyskiwad informacje, obserwator (ang. observer, listener) - obiekty oczekujące na powiadomienie o zmianie stanu obiektu obserwowanego. Kiedy stan obiektu obserwowanego się zmienia, wywołuje on metodę notifyobservers(), która wysyła powiadomienia do wszystkich zarejestrowanych obserwatorów. Podczas powiadamiania obserwatorzy otrzymują także referencję do obiektu obserwowanego. Jeden obserwator może obserwowad kilka innych obiektów, a jeden obiekt obserwowany może byd obserwowany przez kilku obserwatorów, ponadto obiekt obserwowany sam może obserwowad inny obiekt.

Observer

Metoda szablonowa templatemethod() { method1(); method2(); } Zaletą wzorca jest możliwośd zdefiniowania algorytmu składającego się z niezmiennej sekwencji kroków z jednoczesną możliwością modyfikacji wybranych przez klienta kroków (np. JUnit)

Łaocuch zobowiązao czynnościowy wzorzec projektowy, w którym żądanie może byd przetwarzane przez różne obiekty, w zależności od jego typu public void operacja(żądanie: Żądanie) { jeśli potrafimy obsłużyd dany typ żądania żądanie: obsłuż żądanie w przeciwnym wypadku: przekaż żądanie następnikowi }