ana sayfa | makaleler | kodlar | hakkında | cv | referanslar | iletisim
 

ınterface (arayüz) kavramı

nesneye yönelik programlama gün geçtikçe daha çok uygulamada kullanım yeri buluyor. günümüzdeki uygulamaların gittikçe daha gelişmiş ve esnek olması şartı programcıları ve tasarımcıları bu yöne itiyor.

nesneye yönetlik programlamanın önemli yapılarından biri olan arayüzler (interface) kavramını bu yazımızda inceleyeceğiz.

arayüzler uygulandığı sınıfa veya arayüze bir taslak verirler. yani uygulandığı sınıf veya arayüz taslaktan gelen özellikleri aynen almalıdır. yani arayüzde deneme() isimli bir metod varsa, uygulandığı sınıfta da aynen bu isimde bir metod olmalıdır.

arayüzler içinde bulunan metodlarda ve özelliklerde gövde olmaz. yani sadece metodun ismi ve geri dönüş değeri gibi bilgiler olurken, o metodun ne yapacağını arayüz bildirmez.

arayüzlerin isimleri genellikle ı (büyük ı harfi) ile başlar ve böylece diğer yapılardan ayrılırlar; biz de bu kurala uyarak kodlarımızı yazacağız.

bir arayüz bildirmek için interface kelimesi kullanılır. aşağıda ıdeneme isimli bir arayüz bildiriyoruz.

interface ıdeneme
{
// arayüz gövdesi
}

arayüzler içinde metodlar bildirebiliriz.

interface ıdeneme
{
void denememetodu();
int topla(int x, int y);
}

dikkat ettiyseniz metodlarımız için herhangi bir gövde yazmadık. ayrıca metodlar için public, private gibi herhangi bir erişim belirteci de kullanmadık. çünkü arayüzlerde bu tür erişim belirteçleri kullanılmaz; erişim belirteçleri konusundaki tasarruf arayüzü uygulayan sınıfa ya da arayüze bırakılmıştır.

arayüzler içinde özellikler (property) bildirebiliriz.

interface ıdeneme
{
void denememetodu();
int topla(int x, int y);

bool ozellik1
{
get;
set;
}
string ozellik2
{
set;
}
int ozellik3
{
get;
}

}

metodlar gibi arayüzler içinde bildirdiğimiz özelliklerinde herhangi bir erişim belirteci ve gövdesi yoktur. sadece get, set veya ikisinden birini bildiririz. böylece arayüzün uygulandığı sınıf veya arayüzde bu özellikler benzer şekilde yer almalıdır. ancak burada bir notkanın üzerinde durmak istiyorum; eğer özellikte sadece get; ifadesi yer alıyorsa uygulanan sınıfta veya arayüzde sadece get; veya hem get; hem de set; bulunabilir. ancak sadece set; olamaz.

arayüzler içinde alanlar (field) bildiremeyiz.

interface ıdeneme
{
int sayi; // hata verir
char karakter; // hata verir.

void denememetodu();
int topla(int x, int y);

bool ozellik1
{
get;
set;
}
string ozellik2
{
set;
}
int ozellik3
{
get;
}

}

arayüzler içerisinde normal bir sınıftaki gibi üye alanlar (field) bildirilemez.

arayüzlerin uygulanması

şu ana kadar arayüzler ile ilgili genel bilgilere yer verdik. şimdi bir arayüz oluşturup bunu sınıfımıza uygulayalım. örneğin arayüzümüz dört işlem ile ilgili olsun.

interface ıdortıslem
{
int topla(int x, int y);
int cikar(int x, int y);
int carp(int x, int y);
int bol(int x, int y);
}

tanımladığımız arayüz int türündeki veriler için dört işlemi sağlayacak olan dört metod bulunuyor. ancak daha önce de dediğimiz gibi bu işlemlerin nasıl yapılacağı yok. şimdi dortıslem isimli bir sınıf oluşturup arayüzümüzü bu sınıfa uygulayalım.

class dortıslem : ıdortıslem
{
}

bu kod ile biz sınıfımıza ıdortıslem arayüzünü uygulamış olduk. ancak bu hali ile derlemeye çalışırsak aşağıdaki hataları alırız.

  • error 1 'ınterfaces.dortıslem' does not implement interface member 'ınterfaces.ıdortıslem.topla(int, int)'
  • error 2 'ınterfaces.dortıslem' does not implement interface member 'ınterfaces.ıdortıslem.cikar(int, int)'
  • error 3 'ınterfaces.dortıslem' does not implement interface member 'ınterfaces.ıdortıslem.carp(int, int)'
  • error 4 'ınterfaces.dortıslem' does not implement interface member 'ınterfaces.ıdortıslem.bol(int, int)'
     
bu hataların bize anlattığı arayüzde tanımladığımız dört metodun sınıfımızda bulunmadığıdır. eğer visual studio 2005 kullanıyorsanız bu metodları kolay bir şekilde sınıfınıza uygulayabilirsiniz.

yukarıdaki komutu uyguladıktan sonra otomatik olarak arayüzünüz sınıfınıza uygulanacaktır ve metodlar oluşacaktır. şayet visual studio kullanmıyorsanız elle bu metodları kendiniz de yazabilirsiniz. şimdi bu metodların içine doldurup deneyelim.

class dortıslem : ıdortıslem
{
public int topla(int x, int y)
{
return x + y;
}
public int cikar(int x, int y)
{
return x - y;
}
public int carp(int x, int y)
{
return x * y;
}
public int bol(int x, int y)
{
if (y == 0)
throw new dividebyzeroexception("sıfıra bölünemez");
return x / y;
}

}

gördüğünüz gibi metodlarımızın içini sınıfımızda doldurduk. şimdi bu sınıfımızın çalışmasını denemek için main() metodu içine aşağıdaki kodları yazalım.

dortıslem di = new dortıslem();
console.writeline(di.topla(3,5));
console.writeline(di.cikar(3,5));
console.writeline(di.carp(3,5));
console.writeline(di.bol(10,5));

çalıştırdığınız zaman ekran görüntüsü aşağıdaki gibi olmalıdır.

gördüğünüz gibi arayüzlerin kullanımı oldukça basittir. kullanımlarının temel amacı uygulanan sınfın içermesi gereken elemanları zorla bildirmektir; bu özellikle büyük programlar geliştirilirken farklı gruplar tarafından yazılan kodlarda sorun çıkmaması için kullanıldığı zaman oldukça verimli olmaktadır.

arayüz


 

maxiasp.net
maxiasp.com
evren ayan
yusuf öztürk
windowsclient.net
thewpfblog.com
msakademik.net
bildirgec
burak selim şenyurt
yazgelistir.com
cocuk.com

ffwinmobile
secim2007
pixelMaxi
db2class
filmhatalari
Tarihci



bu site bahadır arslan tarafından tasarlanmış ve kodlanmıştır