Zpo-12-wyk-Slajd37
Zmiana struktury klasy
Poza modyfikacją zachowania programu, aspekty mogą także zmieniać jego strukturę. Modyfikacje struktury kodu są znany pod nazwą wprowadzeń (ang. introductions ).
Możliwe zmiany obejmują
- dodanie nowych składowych (konstruktorów, metod i pól) w wybranej klasie lub klasach
- dodanie implementacji interfejsu do wybranej klasy
- wprowadzenie dziedziczenia klasy po innej klasie
- zmianę poziomu widoczności składowych w klasie.
Aspekt dodaje składowe do klasy, podając ich deklaracje poprzedzone nazwą klasy. Specyfikując zasięg widoczności składowej należy pamiętać, że odnosi się on do bieżącego aspektu, a nie docelowej klasy. Oznacza to, że oryginalne pola i metody prywatne klasy nie będą miały dostępu do składowej zdefiniowanej w postaci aspektu.
Definiowanie nowych składowych rodzi również niebezpieczeństwo konfliktu w sytuacji, gdy składowa taka już istnieje w docelowej klasie. Kompilator aspektów zapobiega takiej sytuacji, sygnalizując błąd kompilacji. Konflikty pomiędzy różnymi aspektami są rozwiązywane w bardziej zaawansowany sposób, który jednak nie będzie omawiany.
W podanym przykładzie aspekt Maniery dodaje do klasy Klasa prywtne pole czas oraz metodę ustawCzas ().