Obiektowe metody projektowania systemów Adapter. Wstęp: „Dostosowanie interfejsu klasy do interfejsu, którego oczekuje użytkownik. Adapter umożliwia współprace.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 2 Wojciech Pieprzyca.
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Standardowa biblioteka języka C++
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Wzorce.
Prowadzący: mgr inż. Elżbieta Majka
Wprowadzenie.
Zaawansowane metody programowania – Wykład V
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Programowanie Obiektowe w Javie (c.d.)
Programowanie obiektowe w Javie
Szablony (wzorce) Przykład 1: Szablon klasy -
OOPC++ - dziedziczenie1 Uwagi VS2003 Wykłady (nie na rainbow!)
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
Licznik template<class Count_Type> class Count { public:
W ZORCE P ROJEKTOWE … czyli ktoś już rozwiązał Twoje problemy!
DZIEDZICZENIE · klasy bazowe i klasy pochodne WyświetlAutora( ) Autor
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów Command Pattern.
C++ wykład 6 ( ) Polimorfizm.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
#include #include main () { cout
Wstęp do kontenerów IoC
Test Doubles Adam Gabryś , v1.1,
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Wykład 1 – część pierwsza
Podstawy programowania II
Programowanie strukturalne i obiektowe
Tworzenie aplikacji mobilnych
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 dr inż. Jerzy Kotowski Wykład IX.
WPROWADZENIE W ŚWIAT OBIEKTÓW
Java – coś na temat Klas Piotr Rosik
Programowanie obiektowe
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
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
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
Programowanie w języku C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
K URS JĘZYKA C++ – WYKŁAD 6 ( ) Polimorfizm.
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Obiektowe metody projektowania systemów The Composite DESIGN PATTERN.
Zakres Wzorce projektowe ( -Adapter (str , wykład wzorce projektowe.
Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)
Paweł Starzyk Obiektowe metody projektowania systemów
Wzorce Projektowe w JAVA
Dziedziczenie Wykład 7 Dziedziczenie sekwencyjne
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
Programowanie Obiektowe – Wykład 6
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Programowanie Obiektowe – Wykład 2
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Obiektowe metody projektowania systemów Adapter

Wstęp: „Dostosowanie interfejsu klasy do interfejsu, którego oczekuje użytkownik. Adapter umożliwia współprace klas, która bez jego zastosowania nie byłaby możliwa ze względu na ich niezgodne interfejsy.” Intencja Adaptera wg Bandy Czworga:

Plan: Wstęp Adapter obiektów Adapter klas Przykład: adapter obiektów Przykład: adapter klas Podsumowanie Bibliografia

Wzorzec Adapter konwertuje interfejs jednej klasy na interfejs innej klasy. Używamy tego wzorca, jeśli chcemy, żeby dwie niezwiązane ze sobą klasy współpracowały ze sobą w jednym programie. Koncepcja wzorca Adaptera jest bardzo prosta: piszemy klasę, która posiada wymagany interfejs, a następnie zapewniamy jej komunikację z klasą, która ma inny interfejs. Istnieją dwa sposoby realizacji: poprzez dziedziczenie i poprzez kompozycję. Adapter

Adapter obiektów Pierwotną klasę zawieramy wewnątrz nowej i tworzymy metody wymaganego interfejsu realizujące wywołania metod klasy wewnętrznej.

Adapter klas Z klasy, która ma niezgodny interfejs wywodzimy klasę pochodną i dopisujemy nowe metody tak, by uzyskać wymagany interfejs.

Przykład : adapter obiektów

class Okrag : public Figura { private: XXOkrag *xxokrag; public: Okrag( ); void Wyswietl( ); … } Okrag::Okrag( ) { … xxokrag=new XXOkrag; } void Okrag::Wyswietl( ) { xxokrag->Wyswietlaj( ); } … Przykład c.d.: implementacja

Przykład: adapter klas

Przykład c.d. : implementacja class Rectangle { public: virtual void draw( ) = 0; }; class AdapteeRectangle { public: AdapteeRectangle( int x1,int y1, int x2, int y2 ) :x1_(x1), y1_ (y1), x2_(x2), y2_(y2) { }; void oldDraw() { cout (" << x2_ << "," << y2_ << ")" << endl; } private: int x1_, x2_, y1_, y2_; };

Przykład c.d. class RectangleAdapter : public Rectangle, private AdapteeRectangle { public: RectangleAdapter( int x, int y, int width, int height ) : AdapteeRectangle( x, y, x+width, y+height ) { cout << "RectangleAdapter: (" << x << "," << y<< "), width = " << width << ", height = " << height << endl; }; void draw( ) { oldDraw( ); } }; void main ( void ) { Rectangle* r = new RectangleAdapter( 120, 200, 60, 40 ); r->draw( ); }

Podsumowanie: Adapter stanowi przykład niezwykle użyte- cznego wzorca projektowego, którego działanie polega na dostosowywaniu interfejsu istniejących już obiektów do interfejsu, który jest wymagany przez inne obiekty. Jego implementacja polega na opakowaniu istniejących klas za pomocą nowej klasy o pożądanym interfejsie.

Bibliografia: Stroustrup B.: The C++ Programming Language, Addison-Wesley, 2004 Alan Shalloway, James R. Trott: Projektowanie zorientowane obiektowo. Wzorce projektowe, patterns.html

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