Yazan : Şadi Evren ŞEKER

Arayüz terimi, bilgisayar bilimlerinde farklı amaçlar için kullanılmaktadır. Basitçe iki varlık (entity) arasında bulunan ve bu iki varlığın birbiri ile iletişim kurmasını sağlayan yapıdır.

Bu yazının konusu olan arayüz kavramı, nesne yönelimli programlama (object oriented programming) ortamında bulunan ve nesneler üzerinde yaptırım kurmaya yarayan yapıyı anlatmaktır.

Arayüz kavramı temel olarak soyut sınıfları kapsamaktadır. Yani bir arayüzün (interface) içerdiği fonksiyonlar (metodlar, methods) soyut (abstract) olmalıdır. Aşağıda JAVA dilinde yazılmış olan bir arayüz örneği bulunmaktadır:

public interface sofor{
   public void arabakullanmak(araba x);

}

 

Yukarıdaki örnekte örneğin bir insan’ın sofor olabilmesi için araba kullanması gerektiği anlatılmıştır. Bunun kullanımı aşağıdaki şekilde olabilir:

public class taksici extends insan implements sofor
{
   public void arabakullanmak(araba x){
      System.out.println("kullandığım araba : " + x);
   }
}

yukarıdaki örnekte bulunan taksici sınıfı (class) insan sınıfını miras almış aynı zamanda sofor arayüzünün kurallarına uyduğunu belirtmiştir. Buna göre sofor sınıfında bulunan soyut (abstract) metodu barındırmak zorundadır.

Bu özellik JAVA dilinde birden fazla sınıfın miras alınamamasına (multiple inheritance) bir çözüm olarak da kullanılabilir.

Örneğin yeni tanımlayacağımız bir sınıfın hem Thread hem de Applet sınıflarından miras almasını isteyelim (yani hem thread hem de applet olmasını istiyoruz). Bu duurmda tek bir sınıfı inherit edebileceğimiz için diğerini implements etmemiz gerekir.

public class deneme extends Applet implements Runnable{
   public void run(){
    ...
   }
}

Yukarıdaki örnek kodda Runnable arayüzü kullanan örnek bir deneme sınıfı verilmiştir. Bu sınıfın uyması gereken kural bir run fonksiyonunun bulunmasıdır.  Bu sınıfın bir thread olarak kullanılması için aşağıdaki şekilde bir sınıf tanımına nesneyi parametre geçirmek gerekir:

Thread denemeThread = new Thread(deneme);

Yukarıdaki satırda olan denemeThread isminde yeni bir thread nesnesi tanımlamak ve bu nesneyi deneme sınıfından türetmektir. Bunun olabilmesi için deneme sınıfının Runnable arayüzünü implement etmesi gerekir. Aksi halde thread olarak oluşturulamaz.

Dolayısıyla her ne kadar JAVA da doğrudan çoklu miras (multiple inheritance) yok denilse de bu sorunu çözmek için arayüz kullanımı mümkündür.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir