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

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

Programowanie obiektowe

Template method (metoda szablonowa)

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

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

Zaawansowane programowanie w C++ (PCP)

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

Wzorce projektowe. dr inż. Marcin Pietroo

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

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

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Technologia Programowania 2016/2017 Wykład 5

PHP 5 język obiektowy

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

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

Aplikacje w środowisku Java

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

Builder (budowniczy) Cel: Przykład:

Technologia Programowania 2016/2017 Wykład 4

Projektowanie obiektowe Wzorce projektowe

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

Szablony klas, zastosowanie szablonów w programach

Programowanie w języku Java WYKŁAD

Klasy abstrakcyjne i interfejsy

Programowanie obiektowe i zdarzeniowe

Różne odmiany budowniczego. Po co używać wzorca budowniczy? Kiedy używać budowniczego

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

Dokumentacja do API Javy.

Wzorce prezentacji internetowych

Programowanie bez fabryki. Po co używać wzorca fabryki?

Wzorce projektowe. Wstęp

Programowanie obiektowe

Abstract Factory (fabryka abstrakcyjna)

Polimorfizm. dr Jarosław Skaruz

Wprowadzenie do programowania aplikacji mobilnych

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

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

Enkapsulacja, dziedziczenie, polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

C++ Przeładowanie operatorów i wzorce w klasach

Metody Metody, parametry, zwracanie wartości

Copyright 2008 Mariusz Sieraczkiewicz. Pewne prawa zastrzeżone. http: //

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Klasy generyczne. ZbiórLiczb. ZbiórCzegokolwiek. Zbiór

Wzorce projektowe Michał Węgorek

Programowanie obiektowe

Java: interfejsy i klasy wewnętrzne

Kurs WWW. Paweł Rajba.

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Wykład 7: Pakiety i Interfejsy

Szablony funkcji i klas (templates)

UML a kod. C++, Java i C#

Wzorce logiki dziedziny

Zaawansowane programowanie w języku C++ Klasy w C++

Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz

Diagramy klas. dr Jarosław Skaruz

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Technologie i usługi internetowe cz. 2

Języki i metody programowania Java. Wykład 2 (część 2)

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

TEMAT : KLASY DZIEDZICZENIE

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

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Programowanie obiektowe w języku

10. Programowanie obiektowe w PHP5

Przykładowa implementacja

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

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

Programowanie w Javie wykład 8 Interfejsy

Pakiety i interfejsy. Tomasz Borzyszkowski

Programowanie w języku Java WYKŁAD

Wykład 4: Klasy i Metody

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

Wykład 6: Dziedziczenie

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

KLASY, INTERFEJSY, ITP

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Wykład 5 Okna MDI i SDI, dziedziczenie

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

Wywoływanie metod zdalnych

Programowanie obiektowe

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Podstawy Programowania Obiektowego


Java - tablice, konstruktory, dziedziczenie i hermetyzacja

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Zaawansowane programowanie w języku C++ Programowanie obiektowe

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Programowanie obiektowe

Dziedziczenie. » Dodawanie nowych elementów klasy (składowych funkcyjnych, danych składowych)» Modyfikacje odziedziczonych składowych funkcyjnych

Technologie obiektowe

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

Transkrypt:

Rysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com

Jak implementować wzorce: Simple Factory * Factory Method Abstract Factory Kiedy używać powyższych wzorców Jaka jest relacja pomiędzy UML a kodem Java * Niektórzy nie pozwalają nazywać Simple Factory wzorcem projektowym. Tutaj nie wnikamy w tę dyskusję. Jest to podejście często używane, zatem warte uwagi.

Jest wzorcem kreacyjnym GoF Jej odpowiedzialnością jest tworzenie obiektów

Metoda Simple Factory decyduje o utworzeniu obiektu na podstawie parametrów wejściowych. Bardzo często jest statyczna. public class ChartFactory { public static Chart createchart( ChartType type ) { if ( ChartType.BAR.equals( type ) ) { return new BarChart(); else if ( ChartType.PIE.equals( type ) ) { return new PieChart(); //...

Używaj Simple Factory jako nazwanego zamiennika konstruktora public class ChartManager { Użycie wersji statycznej public void drawchart() { Chart chart = ChartFactory.createChart( ChartType.BAR ); //... public class ChartManager { Użycie wersji niestatycznej private ChartFactory chartfactory; public void drawchart() { Chart chart = chartfactory.createchart( ChartType.BAR ); //...

Klasa ReportPage definiuje metodę tworzącą wykres (metodę fabrykującą, Factory Method) i posługuje się nią w swoich algorytmach, lecz implementację pozostawia klasom pochodnym

public abstract class ReportPage { protected abstract Chart createchart(); public void puttogetherpageparts() { //... Metoda szablonowa (Template Method) puttoghetherpageparts() definiuje ogólny algorytm tworzenia strony raportu. Wykorzystywana jest tam metoda fabrykująca. Chart chart = createchart(); //... O typie konkretnego wykresu decydują klasy pochodne np. PieChartReportPage, implementując metodę fabrykującą. public class PieChartReportPage extends ReportPage { @Override protected Chart createchart() { return new PieChart();

public class ReportManager { public void fillpage( ReportPage page ) { page.puttogetherpageparts(); Dzięki Factory Method możesz obsługiwać stronę raportu i nie martwić się jaki konkretnie wykres zostanie utworzony Używaj Factory Method w kontekście metody szablonowej (Template Method), w której określisz ogólny algorytm (tworzenie strony raportu), a szczegóły (tworzenie konkretnego wykresu) pozostawisz klasom pochodnym Zauważ że dodanie nowego wykresu wymaga tylko dodania nowej klasy! W istniejącym kodzie nic się nie zmienia!

strona raportu składa się dodatkowo z nagłówka, stopki, no i z wykresu strony z wykresem pie mają inne stopki i nagłówki niż strony z wykresem bar wciąż chcesz utrzymać niezależność używania strony od szczegółów implementacji zarządzania wytwarzaniem rodziny powiązanych produktów (różne wykresy, stopki, nagłówki)

public abstract class ReportPage { protected abstract Chart createchart(); protected abstract Header createheader(); protected abstract Footer createfooter(); public void puttogetherpageparts() { //... Chart chart = createchart(); Header header= createheader(); Footer footer = createfooter(); //...

Wzorzec Abstract Factory odpowiada za tworzenie rodziny powiązanych ze sobą produktów Cała złożoność implementacji jest ukryta przed klientem, który pracuje tylko z abstrakcyjną klasą ReportPage Zauważ, że w przykładzie Abstract Factory został zaimplementowany z użyciem Factory Method Abstract Factory podobny do Factory Method lecz nacisk kładzie na rodzinę produktów

W miarę rozrastania się odpowiedzialności klasy ReportPage, warto wydzielić do osobnej klasy tworzenie składowych strony.

Od tego momentu obiekty tworzące części strony można podmieniać dynamicznie, natomiast sama strona ReportPage pozostaje niezmieniona. Efekt ten został uzyskany dzięki preferencji kompozycji nad dziedziczenie. public class ReportPage { private PagePartsFactory pagepartsfactory; public void puttogetherpageparst() { Chart chart = pagepartsfactory.createchart(); Header header = pagepartsfactory.createheader(); Footer footer = pagepartsfactory.createfooter(); //...

Michał Bartyzel Konsultant, trener, współwłaściciel firmy szkoleniowo-doradczej BNS IT. W pracy zawodowej zajmuje się doskonaleniem programistów i zespołów programistycznych, wdrażaniem metodyk pracy oraz rozwijaniem kompetencji pracowników branży IT. Jest współzałożycielem łódzkiego oddziału Java User Group.

BNS IT jest firmą szkoleniowo-doradczą zajmującą się zwiększaniem efektywności programistów i zespołów programistycznych. Nasze usługi skierowane są do firm zatrudniających programistów. Pracujemy dla trzech grup klientów: firm zajmujących się wytwarzaniem oprogramowania firm, które posiadają zespoły programistyczne, lecz działają na innych rynkach niż IT firm integrujących systemy informatyczne