Zpo-12-wyk-Slajd33
Przykład: porada around()
Przykładem zastosowania porady around () jest przedstawiony na slajdzie aspekt. Porada around () zbiera kontekst, którym jest parametr wywołania oryginalnej metody o nazwie rozpoczynającej się od słowa powiedz (). Treść porady składa się z polecenia wyświetlenia napisu "przechwytuję metodę", następnie wywołania oryginalnej metody dopasowanej przez poradę (służąca do tego klauzula proceed () może przyjmować parametry odpowiadające parametrami kontekstu, w jakim została wykonana porada), wyświetleniu kolejnego napisu i zwróceniu jako wyniku napisu "coś innego". W ten sposób została zdefiniowana alternatywna treść metody powiedz ().
Metoda powiedz () przyjmuje parametr będący imieniem osoby do pozdrowienia, wyświetla pozdrowienia, a następnie zwraca przekazane imię.
W metodzie main () metoda powiedz () zostaje wykonana z argumentem "Olu". Powoduje to wywołanie wskazanej metody, jednak już po uruchomieniu jej osiągnięty zostanie punkt złączenia opisany w poradzie. Treść metody powiedz () będzie efektywnie zastąpiona przez treść porady. Ponieważ jednak porada wywołuje oryginalną metodę, więc efekt jej działania w postaci napisu także będzie widoczny. Zmianie ulegnie jednak wartość zwracana przez metodę: zamiast napisu "Olu" będzie ona brzmiała "coś innego".
Wynikiem uruchomienia tego aspektu będzie zatem sekwencja:
przechwytuję metodę
Witaj, Olu
koniec przechwycenia
powiedziałem: coś innego