• Nie Znaleziono Wyników

Obiektowe metody projektowania systemów

N/A
N/A
Protected

Academic year: 2021

Share "Obiektowe metody projektowania systemów"

Copied!
14
0
0

Pełen tekst

(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 <<"AdapteeRectangle: (" << x1_ << "," << y1_<< ") => ("

<< 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 );

(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, 2002

http://home.earthlink.net/~huston2/dp/

patterns.html

(14)

...i to by było tyle

na dzisiaj!

Cytaty

Powiązane dokumenty

Na przykład użytkownik interfejsu narzędzi zawiera obiekty jako przyciski i menu, które doprowadzają żądania odzewu do użytkownika wejściowego.. Ale narzędzia nie mogą

dać przy tym użytkownikowi możliwość podstawienia swojej wyspecjalizowanej wersji. CreateFileDialog zamiast. zwykłego dialogu otwarcia pliku da nam dialog z podglądem

•Każdy observer jest powiadamiany o zmianie w danych w obiekcie subject.. •W odpowiedzi na powiadomienie o zmianie observer wysyła zapytanie w celu synchronizacji własnych danych

 Strategia umożliwia zdefiniowanie rodziny algorytmów realizujących to samo zadanie, ale różniących

Dla polecenia menu o tytule Suma wiersza , utwórz metodę obsługującą zdarzenie actionPerformed , które dla wybranego numeru wiersza oblicza sumę jego elementów.. Utwórz

Każde urządzenie wyposażone w port DisplayPort (z gniazdem mDP, patrz p.5) jest kompatybilne z Thunderbolt i może być podłączone do systemu Thunderbolt, przy czym musi

• Interfejs użytkownika jest dobrze zaprojektowany wówczas, gdy model programu jest zgodny z

Ponieważ rzeczywistym obcią- żeniem silnika jest prądnica prądu stałego możliwe jest tylko tworzenie momentu oporowego przeciwne- go do momentu napędowego.. Minusem tego