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.