Obiektowe metody projektowania systemów Design Patterns STRATEGY.

Slides:



Advertisements
Podobne prezentacje
Programowanie obiektowe
Advertisements

Wzorce Projektowe Bartosz Baliś, Na podstawie
Klasy abstrakcyjne i interfejsy
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Wzorce.
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Bezpieczeństwo wyjątków w C++: OpenGL
Implementacja ekstensji klasy
Budowa i integracja systemów informacyjnych
Programowanie Obiektowe w Javie (c.d.)
Programowanie obiektowe w Javie
OOPC++ - dziedziczenie1 Uwagi VS2003 Wykłady (nie na rainbow!)
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
Obiektowe metody projektowania systemów Command Pattern.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Inżynieria Oprogramowania dla Fizyków
Wykład 8 Wojciech Pieprzyca
Wzorce projektowe w J2EE
Projektowanie i programowanie obiektowe II - Wykład II
Wzorce projektowe (Design Patterns)
Wstęp do kontenerów IoC
Test Doubles Adam Gabryś , v1.1,
Projektowanie obiektowe
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Źródła: podręcznikopracował: A. Jędryczkowski.
Technologie tworzenia aplikacji internetowych Wykład 3
Projektowanie obiektowe
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Programowanie obiektowe III rok EiT
WPROWADZENIE W ŚWIAT OBIEKTÓW
Programowanie obiektowe
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Projektowanie obiektowe
Projektowanie obiektowe
Projektowanie obiektowe
Programowanie obiektowe 2013/2014
Programowanie w języku C++
Dobry kod OO Jeżeli zapytamy statystycznego programistę z czym kojarzy mu się dobry kod OO to najprawdopodobniej będzie mówił o wzorcach projektowych.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Diagram klas Kluczowymi elementami są: klasy (class)
Iteracje w C# Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
OOP, Desing Patterns … and more Michał Dubel
Programowanie obiektowe
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.
Zakres Wzorce projektowe ( -Adapter (str , wykład wzorce projektowe.
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
Programowanie Obiektowe – Wykład 6
Wątki, programowanie współbieżne
(według:
Programowanie Obiektowe – Wykład 2
Zapis prezentacji:

Obiektowe metody projektowania systemów Design Patterns STRATEGY

Wstęp: Strategy (strategia): - należy do tzw. behawioralnych wzorców projektowych, czyli charakteryzujących oddziaływania pomiędzy obiektami. - ma za zadanie zdefiniowanie rodziny algorytmów i rozdzielenie ich tak aby działały zależnie od potrzeb klienta

Plan: Zastosowanie Struktura Kosekwencje (zalety i wady) Implementacja Przykład kodu Zakończenie

Zastosowanie Strategię stosujemy jeśli: Wiele powiązanych klas różni się tylko zachowaniem. Potrzeba kilku wariantów algorytmu. Algorytm używa danych o których klient nie powinien wiedzieć. Klasa definiuje wiele zachowań jako wielokrotne instrukcje warunkowe.

Struktura

Struktura - powiązania Klasy Strategy i Context współdziałają aby zaimplementować wybrany algorytm. Context przekazuje żądanie klienta do odpowiedniej strategii.

Konsekwencje Zalety Strategia pozwala utworzyć rodziny powiązanych algorytmów. Hermetyzacja algorytmów w oddzielnych klasach pozwala na ich modyfikację niezależnie od kontekstu, zwiększa czytelność, oraz łatwość rozbudowy. Eliminuje instrukcje wyboru (warunkowe).

Konsekwencje Wady Klient musi być świadomy różnych algorytmów, aby mógł wybrać właściwy. Nadmiarowa komunikacja pomiędzy Strategy i Context. Zwiększona liczba obiektów.

Implementacja Interfejsy klas Context i Strategy Strategia jako szablon Strategia jako rozwiązanie opcjonalne

Przykładowy kod 1 class Composition { private: Compositor* compositor1; Component* components1; int lineWidth; public: Composition(Compositor*); void Repair(); };

Przykładowy kod 2 class Compositor { public: virtual int Compose(int lineWidth) = 0; protected: Compositor(); }; Class SimpleCompositor : public Compositor { public: SimpleCompositor(); int Compose(int lineWidth); //... }; class TeXCompositor : public Compositor { public: TeXCompositor(); int Compose(int lineWidth); //... };

Przykładowy kod 3 void Composition::Repair () { int breakCount; breakCount = compositor1->Compose(lineWidth); } Composition* quick = new Composition(new SimpleCompositor); Composition* slick = new Composition(new TeXCompositor);

Podsumowanie: Strategia umożliwia zdefiniowanie rodziny algorytmów realizujących to samo zadanie, ale różniących się implementacją Strategia zwiększa czytelność programu i ułatwia jego późniejszą modyfikację.

Bibliografia: Stroustrup B.: The C++ Programming Language, Addison-Wesley, 2004 Shalloway A., Trott J.R.: Projektowanie zorientowane obiektowo. Wzorce projektowe, Helion 2002 Gamma E., Helm R., Johnson R., Vlissides R.:Design Patterns: Elements of Reusable Object-Oriented Software

Fin