Temat : Wzorzec rozszerzeń Visitor - Dydaktyka

Transkrypt

Temat : Wzorzec rozszerzeń Visitor - Dydaktyka
Laboratorium
Projektowanie Obiektowe – Wzorce Projektowe
Temat : Wzorzec rozszerzeń Visitor
Historia zmian
Data
Wersja
Autor
Opis zmian
18.05.2010
1.0
Tomasz Kowalski
Utworzenie dokumentu i wprowadzenie zadania
laboratoryjnego
27.05.2011
1.1
Tomasz Kowalski
Aktualizacja treści
1. Cel laboratorium
Głównym celem laboratoriów jest zapoznanie się z wzorcem projektowym: Visitor
(Wizytor). Należy on do grupy wzorców behawioralnych. Zajęcia powinny pomoc studentom
rozpoznawać omawiane wzorce w projektach informatycznych, samodzielnie implementować
wzorce oraz dokonywać odpowiednich modyfikacji wzorca w zależności od potrzeb projektu.
2. Laboratorium:
1. Laboratorium jest kontynuacją poprzednich laboratoriów dotyczących wzorca command i
composite. Rozwiązanie poniższych zadań należy utworzyć w nowym pakiecie projektu
edu.kis.wp.visitor.
Kolejnym krokiem prac jest zamknięcie na modyfikację oraz otwarcie na rozszerzenie
(zasada otwarcia/zamknięcia) części projektu związanej z kompozytową hierarchią poleceń.
Szef polecił Ci zastosowanie odpowiedniego wzorca (visitor), aby nie zamknąć możliwości
łatwego rozszerzania hierarchii poleceń o nowe funkcjonalności.
Ilustracja 1: Diagram UML obrazujący wzorzec visitor
2. Wzorując się diagramem na ilustracji 1 zaprojektuj i zaimplementuj interfejs visitora.
Następnie do hierarchii klas poleceń dodaj i zaimplementuj metodę accept. Daj możliwość,
żeby każda metoda visit bezpośrednio lub pośrednio (przez wywołanie accept) miała
możliwość zwrócenia rezultatu dowolnego typu (zastosuj klasę Object).
3. W celu przetestowania i uzupełnienia implementacji mechanizmów wzorca visitor
zaimplementuj konkretne visitory zwracające dla danego obiektu reprezentującego
polecenie:
◦ sumaryczną długość narysowanych linii,
◦ sumaryczną drogę przebytą przez głowicę rysującą plotera (uwzględniającą zmiany
pozycji głowicy podczas wykonywania operacji ustalPozycje).
4. *Zaimplementuj konkretny visitor, który będzie umożliwiał dla danego obiektu
reprezentującego polecenie wygenerować nowy obiekt polecenie będący jego
odpowiednikiem o współrzędnych przesuniętych o określoną wartość x i y. W przypadku
polecenia złożonego należy wygenerować nowy zestaw obiektów z nowym nadrzędnym
poleceniem złożonym.