Archive for the ‘ AOP(Aspect Oriented Programming-AspectJ) ’ Category

AOP(Aspect-oriented programming) burada Eclipse’ye nasıl kurulduğunu ve basit bir örnek ile açıklayacağım. Kısaca Java için yazılan AspectJ nasıl kullanabileceğimizi görecez. AOP OOP(Object-oriented programming) nin yerini almak için geliştirilmemiş. Tam tersi OOP’nin yeniden kullanım problemini çözmesini ve programların daha kolay bakım yapılabilmesini sağlamak için geliştirilmiş. Detaylı bilgi ve özellikle aspect kavramı için referans olarak kullandığım çok güzel Türkçe(arkadaşımın derste yaptığı sunum) kaynağı Aspect Oriented Programming linkinden indirebilirsiniz.
Eclipse Helios‘u açıp Help–>Eclipse Marketplace‘yi seçin ve gelen ekrana next buttonu tıklayın.
aspectj
aop
Find–>aspectj arayıp install buttonu tıklayarak kurun.
eclipse
File–>New–>Other–>AspectJ–>Aspect Project bir proje oluşturun.
aspectj project
Aspectj projesi oluşturunca zaten kendisi aspectjrt.jar dosyasını ekliyor.
aspectj.jar
Paketimizi sağ tıklayıp new–>other–>Aspect –>Nextten aynı java classları oluşturduğumuz gibi bunu da oluşturuyoruz.
Bu classların uzantıları .aj dir.

AspectjSinifi.aj

package ethemsulan;

public aspect AspectjSinifi {

	// Test.java sinifinda int tipinde ve degerDonder isminde metod
	//iki arguman aliyor. ethemsulan paketinin altindaki Test sinifinda
	//herhangi bir isim AspectjKul ismini verdim ve bunu after ve beforeda da ayni isim olmali
	pointcut AspectjKul(int a, int b) : 
		execution(int degerDonder(..)) && args(a, b) && within(ethemsulan.Test);
	//metod cgrilimindan once Test.java icindeki main de girilen degerleri consola yazdim
	before(int a, int b) : AspectjKul(a, b) {
		System.out.println(a + " degeri girildi");
		System.out.println(b + " degeri girildi");
	}
	//metod cagrilimindan sonra da girilen degerlerin toplamini cosnola yazdim
	after(int a, int b) returning() : AspectjKul(a,b) {
		System.out.println("Girilen degerin toplami: "+(a+b));
	};
}

Test.java

package ethemsulan;

public class Test {

	public int degerDonder(int a, int b)
	{
		return a+b;
	}
	public static void main(String[] args) {
//Bu class calistirildiginda runtimda aspect consola after ve befor kisminda 
//tanimlanan islemleri(biz degeleri consola yazdirdik) yapar
		Test test=new Test();
		test.degerDonder(5, 3);

	}

}

Test.java sinifini sağ tıklayıp Run As–>AspectJ/Java Application ile calistiryoruz.
Dikkat mainin içinde nesne üretip sadece degerDonder() metodunu çağırıyoruz. Yani consola herhangi bir değer yazmiyoruz. Aşağıdaki çıktı da göründüğü gibi consola aspect çalışarak değer yazıyor.
aspectj example