Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


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

1 Obiektowe metody projektowania systemów Adapter

2 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:

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

4 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

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

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

7 Przykład : adapter obiektów

8 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

9 Przykład: adapter klas

10 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_; };

11 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( ); }

12 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.

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

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


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

Podobne prezentacje


Reklamy Google