Zpo-10-lab
Ćwiczenie 10. Wzorce projektowe cz. II
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 kontynuacją cyklu związanego 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 Po uruchomieniu środowiska należy zaimportować (menu File->Import->Existing projects into workspace) projekt, w którym będą stosowane wzorce projektowe.
Zadanie
Zaimplementuj w systemie bankowym mechanizm naliczania oprocentowania w postaci wzorca State. Uwzględnij trzy rodzaje oprocentowania:
- oprocentowanie typu A: 2% do kwoty 800 PLN oraz 4% od kwoty powyżej 800 PLN
- oprocentowanie typu B: 3% do kwoty 1000 PLN oraz 5% od kwoty powyżej 1000 PLN
- oprocentowanie typu C: 3.5%, niezależnie od wartości salda na rachunku klienta
Mechanizmy naliczania oprocentowania należy zaimplementować w postaci osobnych klas, dziedziczących po wspólnej nadklasie lub implementujących wspólny interfejs.
Zmiana oprocentowania związanego z rachunkiem bankowym polega na zmianie bieżącego obiektu reprezentującego oprocentowanie. Polecenia naliczenia odsetek powinno być delegowane do bieżącego obiektu reprezentującego oprocentowanie.
Zwróć uwagę, aby obiekty reprezentujące oprocentowanie były bezstanowe, tzn. nie przechowywały informacji związanej z rachunkiem (np. wysokości salda). Referencja do rachunku powinna być przekazywana obiektowi reprezentującemu oprogramwanie jako parametr metody obliczającej odsetki.
Pytania do dyskusji
- Wzorzec Prototype jest zaimplementowany w języku Java w postaci metody clone(), wykonującej tzw. płytką kopię obiektu. Dlaczego domyślnie nie jest wykonywana głęboka kopia obiektu?
- Co spowodowałoby uczynienie ogniw łańcucha we wzorcu Chain of Responsibility obiektami przechowującymi stan żądania?
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.