programowanie obiektowe 14, c c++, c#


Wzorce projektowe, część II

0x08 graphic
Przegląd zagadnień

Podczas zajęć zostaną omówione strukturalne wzorce projektowe Fasady i Adaptera oraz czynnościowy wzorzec projektowy Obserwatora.

Zajęcia zakończą się napisaniem programu wykorzystującego zdobytą wiedzę.

Adapter (1)

0x08 graphic

Zadaniem wzorca strukturalnego Adapter jest przetworzenie interfejsu zadanej klasy w taki, który może być obsłużony przez Klienta.

Podstawową korzyścią płynącą ze stosowania wzorca jest umożliwienie współpracy klasom o niekompatybilnych interfejsach.

0x08 graphic
Adapter (2)

Klasa Adaptor udostępnia klasę Adaptacja dla klasy Klient.

W efekcie dostajemy zaadaptowany IstniejacyInterfejs, który nadaje się do wykorzystania przez klasę Klient.

0x08 graphic
Fasada (1)

Fasada jest wzorcem projektowym zapewniającym dostęp do złożonego systemu przez zewnętrzny interfejs.

Fasada (2)

0x08 graphic

Wzorzec projektowy Fasady znajduje zastosowanie w aplikacjach bankowych - kiedy klient ma do czynienia z zewnętrznym interfejsem wysyłającym odpowiednie zapytania do właściwego systemu bankowego.

Model Fasady zawsze jest dwuczęściowy - składają się na niego zarządzający interfejs zewnętrzny oraz podsystemy, które wykonują zlecone przez niego zadania.

Obserwator (1)

0x08 graphic

W aplikacjach często zdarza się, że na zmianę pewnej wartości reaguje kilka obiektów. Na przykład wartość jednej zmiennej chcemy jednocześnie wyświetlać na ekranie i w przypadku zmiany zapisać do pliku. Rozwiązaniem jest wzorzec obserwatora.

We wzorcu istotne są dwa interfejsy: Obserwator oraz przedmiot obserwacji (observable). Klasy implementujące interfejs Obserwator muszą mieć metodę, za pomocą której będą „informowane” o zmianie obserwowanego obiektu. Z kolei Przedmiot musi mieć metodę, która umożliwi dodawanie obiektów, które mają reagować na zmiany w tym obiekcie.

Realizacja klasy obserwatora jest tu dowolna - nie ma znaczenia, jak obiekty te będą reagowały na zmiany w obserwowanym obiekcie.

Najważniejszy mechanizm wzorca obserwatora znajduje się w klasie obserwowanego przedmiotu.

Obserwator (2)

0x08 graphic

Interfejs obserwowanego przedmiotu wymusza implementację metody umożliwiającej dodawanie obserwatorów. Wiąże się to z koniecznością włączenia jeszcze jednej składowej - listy obserwatorów, w przykładzie zapisywanej jako tablica ListaObs typu ArrayList.

Potrzebna jest również metoda, która poinformuje wszystkie dodane obiekty obserwatorów o tym, że w obserwowanym przedmiocie coś się zmieniło. Wywołuje ona metodę Informuj() kolejno wszystkich obserwatorów zapisanych w tablicy ListaObs.

Na przykładzie, obiekty obserwatorów będą informowane o zmianach właściwości dane.

Jak widać, nie tyle obiekty obserwatorów „wypatrują” zmian w obserwowanym przedmiocie, lecz sam przedmiot informuje wszystkich obserwatorów o zmianie.

Często poza metodą dodawania obserwatorów, interfejs obserwowanego przedmiotu zawiera też metodę do usuwania obserwatorów. Ponadto metoda Informuj() może przekazywać dowolny parametr - na przykład wartość zmiennej lub komunikat.

Podsumowanie

0x08 graphic

Zaprezentowany przegląd wzorców projektowych ma na celu zainteresowanie uczestników kursu bardzo ważnym elementem inżynierii programowania.

Przedstawione intuicje wzorców strukturalnych i czynnościowych pokazują, w jaki sposób można wykorzystać pewien rodzaj standaryzacji kodu do tworzenia bardziej skomplikowanych struktur i powiadamiania o zmianach w ich zachowaniu.

Pytania sprawdzające

0x08 graphic

  1. Omów wzorzec Obserwatora.

  2. W jaki sposób wzorzec Adaptera może dostosować interfejs dla klasy Klienta?

0x08 graphic
Laboratorium

1. Napisz program symulujący pracę bankomatu oraz banku internetowego, oparty na szerszym systemie obsługującym bank. Wykorzystaj wzorce Fasady i Obserwatora.

L

L



Wyszukiwarka

Podobne podstrony:
programowanie obiektowe 14
Wyklad 13-14, uwm wnt Mecha, SM 5, Programowanie obiektowe i strukturalne, Wykłady
Programowanie obiektowe(ćw) 1
Zadanie projekt przychodnia lekarska, Programowanie obiektowe
Programowanie obiektowe w PHP4 i PHP5 11 2005
Programowanie Obiektowe ZadTest Nieznany
Egzamin Programowanie Obiektowe Głowacki, Programowanie Obiektowe
Jezyk C Efektywne programowanie obiektowe cpefpo
Programowanie Obiektowe Ćwiczenia 5
Programowanie obiektowe(cw) 2 i Nieznany
programowanie obiektowe 05, c c++, c#
Intuicyjne podstawy programowania obiektowego0
Programowanie obiektowe, CPP program, 1
wyklad5.cpp, JAVA jest językiem programowania obiektowego
projekt01, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek
przeciazanie metod i operatorow, Programowanie obiektowe
projekt06, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek
projekt07, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek

więcej podobnych podstron