Zpo-12-lab: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 26: | Linia 26: | ||
==Literatura== | ==Literatura== | ||
# M. Stochmiałek "Wprowadzenie do programowania aspektowego". [http://misto.e-informatyka.pl/papers/aop-intro.pdf | # M. Stochmiałek "Wprowadzenie do programowania aspektowego". [http://misto.e-informatyka.pl/papers/aop-intro.pdf e-Informatyka] | ||
# R. Laddad "I want my AOP!" (Part 1, 2, 3). [http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect.html JavaWorld] | # R. Laddad "I want my AOP!" (Part 1, 2, 3). [http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect.html JavaWorld] | ||
# R. Laddad "AspectJ in Action. Practical Aspect-oriented Programming". Manning Publications, 2003. | # R. Laddad "AspectJ in Action. Practical Aspect-oriented Programming". Manning Publications, 2003. | ||
# N. Lesiecki "Improve modularity with AspectJ programming". [http://www.ibm.com/developerworks/library/j-aspectj IBM] | # N. Lesiecki "Improve modularity with AspectJ programming". [http://www.ibm.com/developerworks/library/j-aspectj IBM] |
Aktualna wersja na dzień 21:26, 30 sie 2006
Ć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