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

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

Wzorce projektowe. dr inż. Marcin Pietroo

Zaawansowane programowanie w C++ (PCP)

Testowanie oprogramowania Wzorce projektowe

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

Technologia Programowania 2016/2017 Wykład 5

Technologia Programowania 2016/2017 Wykład 4

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 2

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

Wzorce oprogramowania Gof. zastosowane w modelu obiektowym

Programowanie obiektowe

Wzorce projektowe Wykład 7 część 1

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

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

WZORCE PROJEKTOWE. Software engineering has accepted as its charter How to program if you cannot. E. Djikstra

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

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

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

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Wprowadzenie do programowania aplikacji mobilnych

Projektowanie obiektowe Wzorce projektowe

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

Wzorce projektowe w aplikacjach webowych

Programowanie w języku Java WYKŁAD

Builder (budowniczy) Cel: Przykład:

Decorator (dekorator)

Wzorce projektowe. Wstęp

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

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

Wzorce projektowe cz. II

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

Programowanie zorientowane obiektowo. Mateusz Kołecki

Wzorce projektowe Michał Węgorek

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

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

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

Technologia Programowania 2016/2017 Wykład 6

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie obiektowe

Abstract Factory (fabryka abstrakcyjna)

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

1) Wzorzec projektowy Adapter. Zastosowanie:

Program szkolenia: Wzorce projektowe w C++

Wzorce projektowe [ wstęp ]

Wzorce projektowe cz. I

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

Command (action, transaction, polecenie)

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

PHP 5 język obiektowy

Wypożyczalnia VIDEO. Technologie obiektowe

Programowanie obiektowe

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

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

Wzorce projektowe. dr inż. Marcin Pietroo

Projektowanie. Kryteria jakości projektu. Spójność obiektowa. Brak spójności obiektowej. Znaczenie notacji graficznych w projektowaniu

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

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

Programowanie obiektowe

Zaawansowane programowanie w C++ (PCP)

Wzorce projektowe kreacyjne

UML [ Unified Modeling Language ]

Projektowanie aplikacji JEE z użyciem wzorców projektowych i notacji UML

Wywoływanie metod zdalnych

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

Programowanie obiektowe

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

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 projektowe / Eric Freeman [et al.]. Gliwice, cop Spis treści

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

Współbieżność w środowisku Java

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

Kurs WWW. Paweł Rajba.

Perspektywa obiektowości

Remote Method Invocation 17 listopada 2010

Programowanie obiektowe

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

Materiały do zajęć VII

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Wywoływanie metod zdalnych

Programowanie obiektowe i zdarzeniowe

Podejście obiektowe do budowy systemów rozproszonych

Zaawansowane programowanie obiektowe - wykład 5

C#. Wzorce projektowe

Rozdział 1. Przegląd języka UML Diagram klas...24 Diagram współpracy...36 Diagram stanów...45

ASP.NET Wprowadzenie. provided by Przemysław Bykowski

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie Zespołowe

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego u ytku

Wzorce projektowe. dr Jarosław Skaruz

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

: ::Rysunek : ::Figura. Rysuj() *: Rysuj() Uwaga! Modularność (spójność i niezależność składowych) to nie to samo, lecz więcej niż hermetyzacja

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

Diagramy klas. dr Jarosław Skaruz

Rozdział 4 KLASY, OBIEKTY, METODY

Aplikacje RMI

Transkrypt:

(wybrane) Wzorce projektowe Programowanie Obiektowe Mateusz Cicheński

Kreacyjne Fabryka abstrakcyjna (Abstract Factory) Budowniczy (Builder) Metoda wytwórcza (Factory Method) Prototyp (Prototype) Singleton Strukturalne Adapter (Wrapper) Kompozyt (Composite) Dekorator (Decorator) Fasada (Facade) Pełnomocnik (Proxy) Pyłek (Flyweight) Czynnościowe (behawioralne) Mediator Pamiątka (Memento) Polecenie (Command) Strategia (Strategy) Plan zajęć

Fabryka abstrakcyjna Wzorce kreacyjne

<<interface> AbstractFactory AnotherFactory +createobjecta() : ObjectA +createobjectb() : ObjectB +createobjecta() : ObjectA +createobjectb() : ObjectB ObjectA ConcreteFactory +createobjecta() : ObjectA +createobjectb() : ObjectB Fabryka abstrakcyjna Wzorce kreacyjne ObjectB AbstractFactory factory = new ConcreteFactory(); ObjectA a = factory.createobjecta(); factory = new AnotherFactory(); ObjectB b = factory.createobjectb();

3 2 1 Budowniczy Wzorce kreacyjne

<<interface> Builder +buildpart() Director -builder: Builder +construct() ConcreteBuilder <create> Product +buildpart() +getproduct() : Product void construct() { builder.buildpart(); builder.buildpart(); } Budowniczy Wzorce kreacyjne Builder builder = new ConcreteBuilder(); Director = new Director(builder); Director.construct(); Product product = builder.getproduct();

Metoda wytwórcza Wzorce kreacyjne

Creator <create> Product +factorymethod() : Product SpecialCreator <create> SpecialProduct +factorymethod() : Product Metoda wytwórcza Wzorce kreacyjne Creator creator = new ConcreteCreator(); Product product = creator.factorymethod(); creator = new SpecialCreator(); Product product = creator.factorymethod();

Prototyp Wzorce kreacyjne

<<interface>> Prototype +clone() : Prototype Prototype *prototype = new ConcretePrototype(); ConcretePrototype *clone = dynamic_cast<concreteprototype*> prototype.clone(); clone->dosomething(); ConcretePrototype +clone() : Prototype +dosomething() W C++ metoda clone() powinna zwracać wskaźnik na obiekt Prototype. Rzutowanie można wykonać przy pomocy dynamic_cast<>. Prototype prototype = new ConcretePrototype(); Prototype clone = prototype.clone() as ConcretePrototype; clone.dosomething(); Prototyp Wzorce kreacyjne

Singleton Wzorce kreacyjne

Singleton -instance : Singleton; +getinstance() : Singleton +dosomething() W C++ metoda getinstance() powinna zwracać wskaźnik na obiekt Singleton, a zmienna instance powinna być wskaźnikiem na obiekt Singleton. Singleton singleton = Singleton.getInstance(); singleton.dosomething(); Singleton Wzorce kreacyjne

Fabryka abstrakcyjna konstrukcja obiektów podobnego typu (np. różnych typów pojazdów) Budowniczy konstrukcja skomplikowanych elementów przy pomocy drobnych kroków Metoda wytwórcza konstrukcja nowego elementu (bez wywołania konstruktora explicite) Prototyp możliwość kopiowania obiektów (np. w połączeniu ze wzorcem Pamiątki) Singleton dostęp do bazy danych, utrzymanie pojedynczego połączenia z bazą Przykłady użycia Wzorce kreacyjne

Adapter (Wrapper) Wzorce strukturalne

Adaptee +methodb() Adaptor #adaptee : Adaptee +methoda() void methoda() { adaptee.methodb(); } Adaptee adaptee; Adaptor adaptor = = new Adaptor(adaptee); adaptor.methoda(); Adapter (Wrapper) Wzorce strukturalne

Podwyżka dla działu PR Kompozyt Wzorce strukturalne

0..* <<interface>> Component Leaf +operation() +operation() 1 Composite +operation() +add(item : Component) +removeat(index : int) +getchildat(index : int) Kompozyt Wzorce strukturalne Composite composite = new Composite(); composite.add(new Leaf()); composite.add(new Leaf()); composite.operation();

Dekorator Wzorce strukturalne

<<interface>> Component ConcreteComponent +operation() +operation() Decorator ConcreteDecorator -component : Component +operation() +operation() +newoperation() Dekorator Wzorce strukturalne

Fasada Wzorce strukturalne

Facade +operation() PoorAPIClass +xyz() +mjuyhn() void operation() { xyz(); mjuyhn(); } //no need to include PoorAPIClass Facade facade = new Facade(); facade.operation(); Fasada Wzorce strukturalne

Pełnomocnik Wzorce strukturalne

<<interface>> Object +simple() +complex() RealObject +simple() +complex() ProxyObject delegate +simple() +complex() Object object = new ProxyObject(); object.simple(); object.complex(); Pełnomocnik Wzorce strukturalne

Pyłek Wzorce strukturalne

FlyweightFactory -objects[] +getobject(id) : FlyweightObject <create> FlyweightObject FlyweightFactory::getObject(ID) { if (objects.contains(id) == NULL) { FlyweightObject obj = new FlyweightObject(ID); FlyweightObject objects.add(id, obj); } return objects[id]; } Pyłek Wzorce strukturalne FlyweightFactory factory = new FlyweightFactory(); factory.getobject(15); factory.getobject(17); factory.getobject(15);

Adapter utworzenie interfejsu zgodnego z naszą aplikacją, który wykorzystuje możliwości dostarczane przez inny interfejs (niezgodny z naszą aplikacją) Kompozyt tworzenie drzewa obiektów, możliwość wykonywania operacji grupowych na takim drzewie Dekorator możliwość rozszerzania funkcjonalności danej klasy w trakcie działania aplikacji (w przeciwieństwie do dziedziczenia, które to umożliwia na etapie kompilacji) Fasada utworzenie prostego interfejsu ukrywającego inne, bardziej skomplikowane interfejsy Pełnomocnik odkładanie utworzenia skomplikowanego obiektu o dużym zapotrzebowaniu zasobów do czasu kiedy faktycznie taki obiekt musi zostać utworzony Pyłek redukcja zużycia zasobów przez zwracanie tego samego obiektu o wskazanych parametrach (zamiast tworzenia za każdym razem kopii o tych samych parametrach), np. glify typograficzne Przykłady użycia Wzorce strukturalne

Mediator Wzorce behawioralne

<<interface>> Mediator * <<interface>> Colleague +handlenotify() +notify() ConcreteMediator ConcreteColleague +handlenotify() void handlenotify() { //perform specific action //on other Colleague } Mediator Wzorce behawioralne ConcreteMediator mediator = new ConcreteMediator(); Colleague colleague = new ConcreteCollegue(); mediator.add(colleague); colleague.notify();

Pamiątka Wzorce behawioralne

Memento Caretaker -state +setstate() +getstate() <create> Originator -state +operation(); +creatememento() : Memento +restore(memento : Memento) Originator originator = new Originator(); Memento previousstate = originator.creatememento(); originator.operation(); originator.restore(previousstate); Pamiątka Wzorce behawioralne

Kochanie, wynieś proszę śmieci! Synu, wynieś śmieci! Zawsze ja Polecenie Wzorce behawioralne

<<interface>> Command Invoker +execute() ConcreteCommand Receiver +execute() +action() void execute() { receiver.action(); } Polecenie Wzorce behawioralne

Strategia Wzorce behawioralne

<<interface>> Strategy Context +algorithm() +executestrategy() ConcreteStrategy + algorithm() ConcreteStrategy strategy = new ConcreteStrategy(); Context context = new Context(strategy); context.executestrategy(); Strategia Wzorce behawioralne

Mediator zależność pomiędzy obiektami jest zdefiniowana w mediatorze, obiekty nie posiadają bezpośrednio referencji do obiektów, z którymi wymieniają dane Pamiątka zapisywanie aktualnego stanu obiektu, funkcjonalność cofnij Polecenie zdefiniowanie funkcjonalności jako polecenia, które może być przypisane pod kilka elementów GUI Strategia w zależności od kontekstu zaaplikowanie odpowiedniej metody/algorytmu do danych (np. walidacja pól zawierających różne typy danych jak daty, liczby, ciągi znaków) Przykłady użycia Wzorce behawioralne