Java Interface Nedir?

ArdaEgridere tarafından 6 months önce yazıldı, kez görüntülendi ve hiç yorum yapılmadı.

Java dilinde interface adını taşıyan, tasarım şablonlarında ve modellemede kullanılan sınıflar tanımlamak mümkündür. Bir interface normal bir Java sınıfından farksız bir şekilde
tanımlanır. Sınıf tanımlanırken class yerine interface terimi kullanılır.

Nesneye yönelik programlama dillerinde (örneğin C++) tamamen soyut (abstract) sınıflar
tanımlanarak oluşturulabilecek interface benzeri sınıflar için Java dilinde interface ve
implements gibi özel kelimeler mevcuttur. Bu Java diline esnek yazılımlar yapılabilmesi adına büyük zenginlik katmaktadır. Bunun nasıl yapıldığını görmeden önce, bir interface sınıfın ne olduğunu görelim.

interface

Java’da tanımlanmış bir interface sınıftan, normal bir sınıfta olduğu gibi new() operatörü ile
bir nesne oluşturulamaz.

Bir interface sınıfında sadece metotlar açıklanır. Bu metotların gövdeleri boştur. Alt sınıflar bu metotların gövdeleri için gerekli kodu oluştururlar (implement ederler). Metot gövdesi olmayan bir interface sınıftan nesne oluşturulamaz, çünkü sadece metot bildirimine sahip bir nesnenin hiçbir işlevsel görevi olamaz

Tekrar başa dönüp interface kavramından ne gibi durumlarda faydalandığımıza örnekler üzerinden bakalım.

at interface

At isimli interface tanımlandı.

Bunun yanına arapAti ve ingilizAti gibi iki sınıf da oluşturuyoruz.  Bu sınıflar At sınıfını implemente ediyorlar. Bu iki implementasyon sınıfı bünyelerinde getAtinTuru() isminde bir metod oluşturup, bu metodu implemente etmek (metot gövdesi için gerekli kodu oluşturmak) zorundalar.

getAtinTuru

Herhangi bir Java sınıfı implements direktifini kullanarak, bir interface sınıfının sahip olduğu
metotları implemente edebilir. İmplementasyon ile, interface sınıfının tanımladığı (örneğin
getAtinTuru()) metot gövdelerinin, alt sınıfta (yukardaki örnekte arapAti sınıfı) kodlanmasını kastediyoruz. Buna göre interface sınıflarında sadece metodlar belirtilir ve
implemente edilemez. İmplementasyonu altsınıflar üstlenir.

testAt

TestAt bünyesinde atNesne.getAtinTuru() metodu kullanılıyor. Bu metot, arapAti ve ingilizAti  sınıflarında implemente edildiği için , new arapAti () yada new ingilizAti() ile TestAt sınıfına, At interface sınıfının verdiği sözü tutan bir sınıftan elde edilmiş bir nesneyi verebiliriz.

Bir interface aslında dış dünyaya verilen bir söz metnidir. Bir interface sınıf bünyesinde metotlar tanımlar. Interface sınıfı kullanan diğer sınıflar ise bu metodları kullanarak, gerekli işlemleri yaparlar

arapAti sınıfının, At interface tarafından sunulan getAtinTuru() metodunu implemente etmesi, yani metod gövdesini oluşturması gerekiyor. Aksi taktirde arapAti bir AT olamaz.

Interface  kullanıcısı genelde hangi altsınıf üzerinden gereken hizmeti aldığını bilmez, bilmek zorunda  değildir. Bu sayede “loose coupling“ olarak tabir edilen, servis sağlayıcı ve kullanıcı arasında gevşek bir bağımlılık oluşturulmuş olur. Bu yazılım mimarisi açısından büyük bir avantaj sağlamaktadır. Interface sınıflar kullanılarak, sisteme esnek ve ilerde servis kullanıcılarını etkilemeden eklemeler yapılabilir.

Örneğin ilerleyen zamanda Midilli atı cinsinde bir at daha eklenmek istenebilir. Burada yapılması gereken, sadece Midilli atı isminde bir alt sınıf oluşturup, At interface sınıfını implemente etmektir. Bu şekilde sistemi, diğer bölümleri etkilemeden genişletmiş oluyoruz.

Kısaca interface sınıflar, servis kullanıcılarından, kompleks yapıdaki alt sınıfları saklamak ve
servis sunucusu ve sağlayıcı arasındaki bağımlılığı azaltmak için kullanılır.

Benzer Yazılar
Yorumlar ( 0 )

Tema: Sipsi V2
%d bloggers like this: