Zpo-7-lab
Ćwiczenie 7. Wzorce projektowe cz. III
Informacje wstępne
Ćwiczenie jest realizowane w języku Java w środowisku Eclipse 3.2. Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem. Ćwiczenie jest ostatnią częścią związaną z wzorcami projektowymi. Celem jest zastosowanie kolejnych wzorców w przykładowym systemie obiektowym dotyczącym banku.
Instalacja
Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 [1] oraz środowiska Eclipse [2] w wersji 3.2 Ćwiczenie jest kontynuacją poprzedniego, dlatego należy prowadzić prace w dotychczasowym projekcie.
Zadanie 1
Zaimplementuj w systemie bankowym mechanizm wykonywania raportów, stanowiący realizację wzorca Visitor. Każdy raport jest obiektem Visitor, który odwiedza kolejne typy rachunków i produktów bankowych (obiektów Element), wykonując na nich operacje specyficzne dla danej klasy elementów.
Stwórz metodę w klasie bank, odpowiedzialną za uruchomienie wykonania raportu, która przyjmuje obiekt Raport jako parametr.
Zaimplementuj następujące raporty:
- obliczający sumę sald na wszystkich rachunkach, których posiadają bieżący typ oprocentowania A
- wykonujący zestawienie wszystkich rachunków o wartości salda powyżej 1000 PLN
Zadanie 2
Zaimplementuj w systemie bankowym możliwość chronienia niektórych danych rachunku w postaci wzorca Proxy. Wywołania metod pytających o wartość salda, nazwisko właściciela etc. powinny zwracać wartości nieznaczące, np. -1 lub "--nieznany--". Użycie ochrony powoduje, że nie można odczytać wartości wybranych pól (m.in. nie są one widoczne w raportach).
Metody wprowadzające i usuwające ochronę obiektu Rachunek powinny być dostępne w klasie Bank.
Pytania do dyskusji
- Wzorce Proxy, Adapter i Decorator mimo podobnej struktury różnią się od siebie w bardzo istotny sposób. Dokonaj ich porównania.
- Czy obiekty poleceń występujące we wzorcu Command mogą podlegać zarządzaniu przez pulę (wzorzec Pool of Objects)? Odpowiedź uzasadnij.
Literatura
- E. Gamma, R. Helm, R. Johnson, J. Vlissides "Design Patterns: Elements of Reusable Object-Oriented Software". Addison-Wesley, 1995.
- D. Gallardo "Java Design Patterns 101". [IBM]
- J. Cooper "Java. Wzorce projektowe". Helion, 2001
- A. Shalloway, J. R. Trott "Programowanie zorientowane obiektowo. Wzorce projektowe". Wydanie II, Helion, 2005.