(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

Wzorce oprogramowania Gof. zastosowane w modelu obiektowym

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

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. Software engineering has accepted as its charter How to program if you cannot. E. Djikstra

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

Projektowanie obiektowe Wzorce projektowe

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Wprowadzenie do programowania aplikacji mobilnych

Wzorce oprogramowania Gof (cd) zastosowane w modelu obiektowym

Programowanie w języku Java WYKŁAD

Decorator (dekorator)

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

Builder (budowniczy) Cel: Przykład:

Wzorce projektowe. Wstęp

Wzorce projektowe w aplikacjach webowych

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce projektowe cz. II

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

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

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

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie obiektowe

Technologia Programowania 2016/2017 Wykład 6

1) Wzorzec projektowy Adapter. Zastosowanie:

Abstract Factory (fabryka abstrakcyjna)

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

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

Program szkolenia: Wzorce projektowe w C++

Wzorce projektowe [ wstęp ]

Wzorce projektowe cz. I

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

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

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

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe kreacyjne

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

Zaawansowane programowanie w C++ (PCP)

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

Programowanie obiektowe

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

UML [ Unified Modeling Language ]

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

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

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

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

Programowanie obiektowe i zdarzeniowe

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

Perspektywa obiektowości

Kurs WWW. Paweł Rajba.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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ć

Programowanie Zespołowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe

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

Polimorfizm. dr Jarosław Skaruz

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

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

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

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

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

Singleton Wzorce kreacyjne

Singleton -instance : Singleton; +getinstance() : Singleton +dosomething() Singleton singleton = 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 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 +newoperation() +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 hierarchii 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

Pytania? http://bit.ly/oop2015