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

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

Wzorce projektowe. dr inż. Marcin Pietroo

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

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

Programowanie obiektowe

Technologia Programowania 2016/2017 Wykład 4

Projektowanie obiektowe Wzorce projektowe

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

Programowanie obiektowe

Zaawansowane programowanie w C++ (PCP)

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

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

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

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

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


Wzorce projektowe kreacyjne

Wzorce projektowe. Wstęp

Abstract Factory (fabryka abstrakcyjna)

Testowanie oprogramowania Wzorce projektowe

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

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

Technologia Programowania 2016/2017 Wykład 5

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

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

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

Builder (budowniczy) Cel: Przykład:

Diagramy klas. dr Jarosław Skaruz

PHP 5 język obiektowy

Technologie i usługi internetowe cz. 2

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

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

Wprowadzenie do programowania aplikacji mobilnych

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne i interfejsy

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

Scala - programowanie obiektowo-funkcyjne

Programowanie obiektowe w języku

Programowanie obiektowe

Polimorfizm. dr Jarosław Skaruz

Programowanie obiektowe

Aplikacje w środowisku Java

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

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

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie obiektowe

Wzorce oprogramowania Gof. zastosowane w modelu obiektowym

Przykładowa implementacja

Projektowanie obiektowe Wzorce projektowe. Wprowadzenie do wzorców projektowych

Programowanie obiektowe i zdarzeniowe

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

Java: interfejsy i klasy wewnętrzne

Programowanie w języku Java WYKŁAD

Decorator (dekorator)

Dokumentacja do API Javy.

Podstawy Programowania Obiektowego

Programowanie Zespołowe

Enkapsulacja, dziedziczenie, polimorfizm

Podstawy Języka Java

Wywoływanie metod zdalnych

Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014

Metodyki zwinne wytwarzania oprogramowania

.NET Klasy, obiekty. ciąg dalszy

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Projektowanie obiektowe oprogramowania Wykład 4 - SOLID GRASP Wiktor Zychla 2012

Wywoływanie metod zdalnych

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

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Programowanie obiektowe

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

Wzorce projektowe i refaktoryzacja

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

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie 2. Język C++. Wykład 9.

WZORCE PROJEKTOWE (I) (DESIGN PATTERNS)

Podstawy Programowania Programowanie Obiektowe

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Wzorce projektowe [ wstęp ]

Programowanie w języku Java WYKŁAD

Visual Basic.NET. Wzorce projektowe

Programowanie obiektowe

MODELOWANIE OBIEKTOWE

ASP.NET Wprowadzenie. provided by Przemysław Bykowski

1 Atrybuty i metody klasowe

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

TEMAT : KLASY POLIMORFIZM

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Template method (metoda szablonowa)

Wykład 1 Inżynieria Oprogramowania

Wykład 4: Klasy i Metody

Dziedziczenie. Tomasz Borzyszkowski

Wprowadzenie do systemów informacyjnych

Transkrypt:

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass Client «używa» «interface» IInterface AbstractService + Operation() : void Serv ice ConcreteServ ice + Operation() : void Klasa abstrakcyjna może zawierać implementacje, interfejs nie Klasa może dziedziczyć tylko z jednej klasy abstrakcyjnej iwielu interfejsów Przykłady IEnumerable vs Stream 1.2 Delegation (Prefer Delegation over Inheritance) Dziedziczenie jest relacją statyczną, delegacja może być dynamiczna Delegujący obiekt może ukrywać metody delegowanego, co jest niemożliwe w przypadku dziedziczenia klasa domeny nie dziedziczymy z klas użytkowych (Person nie dziedziczy z Hashtable), ale delegacja jest ok. delegacja powoduje że jest więcej kodu 2 Wzorce kreacyjne

2.1 Singleton class Singleton Singleton - _instance: Singleton + Instance: Singleton - Singleton() Jedna i ta sama instancja obiektu dla wszystkich klientów Często punkt wyjścia dla innych elementów architektury aplikacji Zalety: Uniwersalność Leniwa konstrukcja Rozszerzenia: Możliwość sterowania czasem życia obiektu wspierającego (pseudosingleton, singleton z określoną polityką czasu życia) Singleton z parametrami 2.2 Monostate Usuwa ograniczenie liczby instancji w Singletonie, pozostawia właściwość współdzielenia stanu

2.3 (Parametrized) Factory class Factory Client uses «interface» Product asks for object ConcreteProduct creates Factory + CreateFineProduct(string) : Product + CreateProduct(int) : Product Product CreateProduct( int Type ) { switch ( Type ) { case ProductType.P1 : return new ConcreteProduct1(); case ProductType.P2 : return new ConcreteProduct2(); } } To jeden z częściej stosowanych wzorców, realizacja odpowiedzialności Creator z GRASP Interfejs klasy fabryki może mieć wiele metod, ułatwiających tworzenie konkretnych obiektów (parametryzacja przez typ metody fabryki, przez wiele metod jednej fabryki); fabryka może też zwracać obiekt typu pochodnego względem oczekiwanego, w ten sposób być przygotowana na zmiany funkcjonalności klient spodziewa się obiektu typu A, dostaje B dziedziczące z A i korzysta z niego jak z A, ale w rzeczywistości B realizuje swoją odpowiedzialność być może inaczej niż A Fabryka może kontrolować czas życia tworzonych obiektów (zwracając obiekty o różnych czasach życia) Fabryka może być przygotowana na rozszerzenia, w ten sposób realizując postulat OCP (przykład z wykładu: Factory+FactoryWorker) W praktyce zamiast z singletonów i monostates lepiej używać fabryki, jest dużo bardziej uniwersalna

2.4 Factory Method Rozszerzenie wzorca Factory Deleguje utworzenie obiektu użytkowego do metody tworzącej Podklasy specyfikują konkretną funkcjonalność użytkową 2.5 Abstract Factory Nazywany też tookit Abstrakcyjna fabryka całej rodziny obiektów (może być opisana przez interfejs)

2.6 Prototype Istnieje kilka prototypowych instancji obiektów Tworzenie nowych polega na kopiowaniu prototypów Nie ma znaczenia kto i jak wyprodukował instancje prototypów 2.7 Object Pool class Pool Client asks for Reusable uses ReusablePool + AcquireReusable() : Reusable + Instance() : ReusablePool + ReleaseReusable(Reusable) : void Reusable Reużywanie / współdzielenie obiektów które są kłopotliwe w tworzeniu (np. czasochłonne) Metoda tworzenia/pobierania obiektu bywa parametryzowana

2.8 Builder Ukrywanie szczegółów kodu służącego do kreowania obiektu/obiektów Ukrywanie wewnętrznej struktury obiektu Przykład XmlTextWriter Przykład z wykładu: http://www.wiktorzychla.com/2012/02/simple-fluent-and-recursive-tagbuilder.html