Obiektowe metody projektowania systemów

Slides:



Advertisements
Podobne prezentacje
C++ wykład 9 ( ) Szablony.
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Wzorce Projektowe Bartosz Baliś, Na podstawie
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Programowanie obiektowe
Programowanie obiektowe
Wzorce.
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Bezpieczeństwo wyjątków w C++: OpenGL
Implementacja ekstensji klasy
Budowa i integracja systemów informacyjnych
Programowanie obiektowe w Javie
Szablony (wzorce) Przykład 1: Szablon klasy -
W ZORCE P ROJEKTOWE … czyli ktoś już rozwiązał Twoje problemy!
Szkolenie dla NaviExpert,
Projektowanie oprogramowania
Organizacja Przedsięwzięć Programistycznych Projektowanie
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów Command Pattern.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Wykład 8 Wojciech Pieprzyca
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
czyli (anty)wzorzec Singleton
Wzorce projektowe (Design Patterns)
Wstęp do kontenerów IoC
Test Doubles Adam Gabryś , v1.1,
Projektowanie obiektowe
Projektowanie obiektowe
Programowanie obiektowe – zastosowanie języka Java SE
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
JAVA.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Projektowanie obiektowe
Projektowanie obiektowe
Programowanie obiektowe 2013/2014
Programowanie w języku C++
K URS JĘZYKA C++ – WYKŁAD 10 ( ) Szablony.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Wzorce projektowe Jacek Matulewski
Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1.
Kurs języka C++ – wykład 4 ( )
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
OOP, Desing Patterns … and more Michał Dubel
Obiektowe metody projektowania systemów The Composite DESIGN PATTERN.
Design Patterns.: Visitor :.. Plan prezentacji 1. Trochę statystyk. 2. Zadanie problemowe. 3. Rozwiązanie… Visitor. 4. Visitor w UML (a,b,c). 5. Implementacja.
Obiektowe metody projektowania systemów Adapter. Wstęp: „Dostosowanie interfejsu klasy do interfejsu, którego oczekuje użytkownik. Adapter umożliwia współprace.
Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)
Zakres Wzorce projektowe - kreacyjne -Factory Method -Abstract Factory.
Paweł Starzyk Obiektowe metody projektowania systemów
Wzorce Projektowe w JAVA
Programowanie Zaawansowane
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
Programowanie Obiektowe – Wykład 6
Wzorzec MVC na przykładzie CakePHP
Typy wyliczeniowe, kolekcje
Kurs języka C++ – wykład 3 ( )
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
PGO - Projektowanie i implementacja pierwszych klas
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Obiektowe metody projektowania systemów Factory Method design pattern (aka. Virtual Constructor)

Wstęp: Factory Method – wzorzec kreacyjny pracujący w zakresie klasowym Intencja – Zdefiniować interfejs dla tworzenia obiektu, ale pozwolić podklasom skonkretyzować, którą klasę instancjalicować.

Plan: Powody utworzenia, motywacja Zastosowanie Przykłady implementacji w C++ Struktura i elementy składowe Konsekwencje użycia Powiązania z innymi wzorcami Bibliografia

Powody utworzenia, motywacja Fabryki obiektów, a operator new Znajomość tylko klasy abstrakcyjnej Ale tworzenie podklas konkretnych Zrzucenie odpowiedzialności na potomka Przykład: uelestyczniene frameworks

Zastosowanie Implementacja klasy nie zawiera informacji o tym co dokładnie tworzymy tylko kiedy. Klasa wymaga by jej podklasy wyspecyfikowały jaki obiekt będzie potrzebny. Klasa oddelegowuje odpowiedzialność do jednej z klas pomocniczych.

Przykłady implementacji w C++ (parametryzowane factory method) class Creator { public: virtual Product* Create(ProductId); }; Product* Creator::Create (ProductId id) { if (id == MOJE) return new MyProduct; if (id == TWOJE) return new YourProduct; // i.t.d. dla innych produktów... return 0; } Product* MyCreator::Create (ProductId id) { if (id == TWOJE) return new MyProduct; if (id == MOJE) return new YourProduct; // N.B.: zamieniłem TWOJE i MOJE if (id == ICH) return new TheirProduct; return Creator::Create(id); // wywołane jeśli wszystko inne zawiedzie

Przykłady implementacji w C++ (użycie szablonów) // Użycie szablonów by uniknąć podklasowywania. class Creator { public: virtual Product* CreateProduct() = 0; }; template <class TheProduct> class StandardCreator: public Creator { virtual Product* CreateProduct(); Product* StandardCreator<TheProduct>::CreateProduct () { return new TheProduct; } class MyProduct : public Product { MyProduct(); // ... StandardCreator<MyProduct> myCreator;

Struktura i elementy składowe

Konsekwencje użycia Zalety. W kodzie nie musimy zawierać odwołań do specyficznych dla zastosowania klas. Kod jest abstrakcyjny i ogólny, ale działa na konkretnych, zdefiniowanych przez użytkownika klasach produkowanych.

Konsekwencje użycia Zalety. Możemy zaimplementować tworzenie domyślnego produktu, ale dać przy tym użytkownikowi możliwość podstawienia swojej wyspecjalizowanej wersji. (np.. CreateFileDialog zamiast zwykłego dialogu otwarcia pliku da nam dialog z podglądem pliku graficznego)

Konsekwencje użycia I wady… Potrzeba podklasowania Creator dla każdego kolejnego ConcreteProduct. Chyba, że użyjemy szablonów…

Powiązania z innymi wzorcami Abstract Factory jest często implementowane z wykorzystaniem Factory Method. Jest to eleganckie i czytelne rozwiązanie. Prototype – podobieństwa i różnice Metody-fabryki są często wywoływane z Template Method.

Podsumowanie: Klasa Creator pozwala podklasom zdefiniować konkretna metodę-fabrykę, a ona produkuje konkretny produkt, będący elementem pewnej nadklasy. Dostajemy wysoce elastyczny i elegancki, czytelny kod, choć czasem tę samą funkcjonalność możnaby uzyskać żonglując konstruktorami.

Bibliografia: Gamma E.,Helm R.,Johnson R., Vlissides J.: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995 http://c2.com/cgi/wiki?FactoryMethod http://hillside.net/patterns/ http://en.wikipedia.org/wiki/Factory_method_pattern Alexandrescu A.: Modern C++ Design, Addison-Wesley, 2001 http://sourceforge.net/projects/loki-lib/

...i to by było tyle na dzisiaj!