26 Haziran 2010 Cumartesi

C#'da Interface(Arayuz) Kavrami

Interface'in tanimini yapacak olursak, kisaca butun uyeleri abstract olan class'lardir diyebiliriz. Peki neden kullanilma geregi hissedilmis. Bunun nedenini de soyle aciklayabiliriz. Ornegin ucabilen ve yuzebilen classlarimiz olsun. Bu classlardan tureyen uyelerimiz olsun. Ornegin ucabilen sinifindan kalitilan kus ve yuzebilen sinifindan kalitilan vapur isimli uyelerimiz olsun. Bizim ayrica karabatak gibi bir uyemiz daha olsun. Fakat istegimiz bu karabatak'in her iki class'tan da uretilmesi. C# dahil hic bir programlama dili coklu kalitima bu sekilde izin vermez. Burada yardimimiza Interface'ler kosuyor.Buna gore yeni yapimiz su sekilde olacaktir. Canli ve Cansiz classlarindan kalitilan kus ve vapur classlari olacak, ayni zamanda karabatak da canli class'indan tureyecek ve IUcabilir ve IYuzebilir interfacesini implement edecek.

Abstract, gorevlerinden de cikaracagimiz uzere public ve abstract olmak zorunda. C# intellisense'nin bize getirdigi kolaylik sayesinde bize sen iki saat bunlari yazma ben senin yerine yazarim diyor. Kisaca nasil tanimlaniyor bir interface?

Interface IYuzebilir
{
Void Yuz();
}
Buna gore bundan sonra herhangi bir ders IYuzebilir interfacesini implement ederse Yuz() metodunu da kullanmak zorunda kalacak. Karabatak icin bu tanimlamayi gosterelim;

public class Karabatak : Canli, IUcabilir, IYuzebilir
{
public void Uc()
{
Console.WriteLine("Karabatak ucuyor.");
}
public void Yuz()
{
Console.WriteLine("Karabatak yuzuyor...");
}
}

Buradan da anlasilacagi uzere bir class'a birden fazla interface uygulanabilir. Bunlarin tanimlamada kullanildiklari sira onemli degildir.

0 yorum: