Öncelikle “Aspect Oriented Programming”(AOP), “Object Oriented Programming”‘in bir sonra ki aşaması değil. Bazı kavramların ortak olmasından dolayı ilk akla gelen soru işaretleri bu yönde oluyor. AOP‘de, yazılımın karmaşıklığını gidermek adına gerekebilecek bir programlama yöntemi. Tıpki OOP gibi. Yani OOP ölüyor, yerine AOP geçiyor gibi bir durum söz konusu değil. OOP’e alternatif bir şey olmadığı şeklinde düşünmekte, AOP anlamak için fayda var…
Peki nedir bu AOP? AOP‘ı basitçe Türkçe’ye çevirirsek bazı şeyleri anlamak adına belki yardımcı olur…Bu bağlamda “Görünüşe Yönelik Programlama” benim en tercih ettiğim bir çeviri oluyor. AOP, yazılımdaki birbiri ile kesişen ilgileri(cross-cutting concerns) ve bu ilgilerin oluşturduğu karmaşıklığı çözmek adına ortaya çıkmış bir method aslında.
Yazılım geliştirken, en zorlayıcı kısım genellikle birbiri ile kesişen ilgileri basitleştirmektir. Neden böyle bir basitleştirme içerisinde olmaya gerek var ki şeklinde bir soru sorabilirsiniz… Geliştirdiğimiz uygulamaların yaşam süresinde oluşabilecek, yeni gereksinimleri, sorunları daha kolay yönetebilmek adına birbiri ile kesişen ilgileri en basit halde ele almamız gerekir…Haa yok ben bir kere yazacağım,çalışacak, sonra bir daha dokunmayacağım şeklinde bir uygulama geliştirmekteyseniz bunlara çok da kafa yormaya gerek yok açıkcası.
AOP, az önce bahsettiğim birbiri ile kesişen ilgileri basitleştirmek ve hatta ayırmak adına kullanılabilecek bir yöntem. Hemen bu noktada da OOP’de de bu tarz şeyleri yapabileceğimiz yöntemler var şeklinde düşünebilirsiniz…Doğrudur,var…Ancak zaman zaman yeterli olamıyor ne yazık ki…Ya da bazı şeyleri daha karmaşıklaştırıyor…Bu noktada “zaman” kelimelerinin altını çizmekte fayda var sanırım. Çünkü bu konuda AOP’ı düşünmeye sebep olan, OOP’den farklı yönlerini ortaya çıkaran kavram “zaman” kavramı…AOP, yazılımın yaşam süresi boyunca oluşabilecek ilgilerin bir biri ile kesişmesini ve karmaşıklığa yol açmasını engellemek adına OOP’den farklılaşıyor. Biraz daha teknik olarak açıklamak gerekirse, bir uygulamanın run-time süresinde ortaya çıkabilecek ilgileri ayırmak açısından farklılaşıyor diyebiliriz. AOP’i yazımın başında “Görünüşe Yönelik Programlama” şeklinde çevirmeyi tercih etmiştim. Görünüş olarak anlamlandırdığım kavram, uygulamanın kendisinin ya da içerisinde ki nesnelerin durumları diyebilirim.