W części pierwszej opisane zostały aspekty dynamiczne, czyli dodatki do istniejących klas i metod. Tym razem opiszę aspekty statyczne. Aspekty te pozwalają dodać nowe metody i pola do istniejących klas.
Aaa:
package kkk;
public class Aaa {
public static void main(String[] args) {
Obiekt samochodzik = new Obiekt((float) 99.99);
System.out.println("cena - " + samochodzik.getCena());
System.out.println("po podatku - " + samochodzik.dodajPodatek(99));
System.out.println("po uldze - " + dodajUlge(99));
}
public static float dodajUlge(float cena) {
return cena - cena * ulga / 100;
}
}
AddMethod:
package kkk;
public aspect AddMethod {
public static float podatek = 23;
public static int Aaa.ulga = 15;
public float Obiekt.dodajPodatek(float cena) {
return cena + cena * podatek / 100;
}
}
Obiekt:
package kkk;
public class Obiekt {
private float cena;
public Obiekt(float cena) {
this.setCena(cena);
}
public float getCena() {
return cena;
}
public void setCena(float cena) {
this.cena = cena;
}
}
Wynik:
cena - 99.99
po podatku - 121.770004
po uldze - 84.15
Jak widać w przykładzie aspekt dodaje jedną metodę do klasy Obiekt i jedno pole do klasy Aaa.
Na tych metodach i polach można operować tak samo jak na tych napisanych wprost.
Brak komentarzy:
Prześlij komentarz