Zpo-12-lab
Ćwiczenie 12. Programowanie aspektowe
Informacje wstępne
Ćwiczenie jest realizowane w językach Java oraz AspectJ. Sugerowanym środowiskiem jest Eclipse 3.2 wyposażone w plug-in AJDT
Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem oraz przeczytać serię artykułów autorstwa R. Laddada na stronie JavaWorld
Celem ćwiczenia jest zaimplementowanie prostych aspektów umożliwiających modyfikację zachowania programu w języku Java.
Instalacja
Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0, środowiska Eclipse w wersji 3.2 oraz plug-ina AJDT
Zadanie 1
Zadanie polega na stworzeniu aspektu, który uniemożliwi wywołanie metody napiszImie() z parametrem Alicja, który powoduje zgłoszenie wyjątku. Powinien przechwycić wywołanie metody, a następnie, w zależności od przekazanych jej parametrów, przekazać jej sterowanie lub ją zignorować.
Po napisaniu kodu zdekompiluj otrzymany bajtkod i przanalizuj sposób łączenia kodu źródłowego i aspektów.
Zadanie 2
Zadanie polega na stworzeniu aspektu, który spowoduje, że wywołanie metody toString() w klasie Osoba spowoduje zwrócenie wyniku będącego połączeniem wyniku metody imie() oraz nazwisko(), rozdzielonych pojedynczą spacją.
Zadanie 3
Napisz aspekt dla systemu bankowego rozwijanego w ćwiczeniach dotyczących wzorców projektowych, który utworzy w każdym rachunku listę będącą historią operacji na rachunku oraz spowoduje dopisanie do niej informacji o każdej operacji wykonywanej na rachunku.
Pytanie do dyskusji
Jaka jest różnica pomiędzy wykorzystaniem zmiennej thisJoinPoint w języku AspectJ a użyciem w podobnych celach mechanizmu Java Reflection? Które z rozwiązań jest efektywniejsze? Dlaczego?
Literatura
- M. Stochmiałek "Wprowadzenie do programowania aspektowego". e-Informatyka
- R. Laddad "I want my AOP!" (Part 1, 2, 3). JavaWorld
- R. Laddad "AspectJ in Action. Practical Aspect-oriented Programming". Manning Publications, 2003.
- N. Lesiecki "Improve modularity with AspectJ programming". IBM