C#’da Interface Kullanımı

Projelerinizde sabit yapılar (method,field vb. imzaları) tasarlayıp bunu kullanıcıya sunabilirsiniz. Bu şekilde kullanıcılara oluşturduğunuz yapılara uyma kolaylığı (zorunluluğu) getirebilirsiniz.

Eğer C#’da Abstract Class konulu yazımı incelediyseniz ilk paragrafların aynı olduğunu göreceksiniz. Abstract Classlar ve Interface ler birbirinden bazı temel hatları ile ayrılırlar. Bir sonraki yazımda Abstract Class ve Interface ler arasındaki farklara değineceğim.Bu yazımda sadece interface in ne olduğuna ve kullanımına değineceğim.

Aşağıda bir interface yazdım. Yeni bir class oluşturarak “class” kelimesini “interface” olarak değiştirmeniz gerekiyor.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication7
{

interface Arayuz
{
void KullaniciEkle(int userID, string adi, string soyadi);
string KullaniciAdiGetir(int userID);
int userIdGetir
{
get;
set;
}

}
}

1- Interface yazılırken methodlarda “public” kelimesi kullanılmaz.

2- Interface içerisinde yalnızca method imzaları tasarlayabilirsiniz. En büyük amaçlardan biri budur.

Prosedür >> void KullaniciEkle(int userID, string adi, string soyadi);

Fonksiyon >> string KullaniciAdiGetir(int userID);

Özellik >> int userIdGetir
{
get;
set;
}
3-Interface içerisinde tamamlanmış methodlar oluşturamazsınız.

4-Aynı şekilde Interface içerisinde değişken tanımlayamazsınız.

Aşağıdaki gibi bir kullanım hatalıdır. Error sekmesine dikkat ediniz.

csharpda-interface-kullanimi-1

csharpda-interface-kullanimi-1

Error List sekmesinde oluşan iki hata interface’e eklenen tamamlanmış “KullaniciAdiniBuyukHarfeCevir” isimli method ve “ogrenciAdi” isimli değişkenden(field) kaynaklanmaktadır.

5-Interface lerin kullanım amaçlarından biri de çoklu miras olayına destek vermesidir. Normal şartlarda bir class’a birden fazla miras veremezsiniz.

Interface lerin Kullanımı

Interface leri Miras verme yöntemi ile kullanabilirsiniz. Yeni bir class oluşturarak interface i aşağıdaki gibi “implement” ediniz.

csharpda-interface-kullanimi-2

csharpda-interface-kullanimi-2

Sonuç aşağıdaki gibi olacaktır.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication7
{

class Class11:Arayuz
{
#region Arayuz Members

public void KullaniciEkle(int userID, string adi, string soyadi)
{

//buraya istediğiniz gibi kodlar ekleyebilirsiniz…
throw new NotImplementedException();
}

public string KullaniciAdiGetir(int userID)
{

//buraya istediğiniz gibi kodlar ekleyebilirsiniz…
throw new NotImplementedException();
}

public int userIdGetir
{

get
{

//buraya istediğiniz gibi kodlar ekleyebilirsiniz…
throw new NotImplementedException();
}

set
{

//buraya istediğiniz gibi kodlar ekleyebilirsiniz…
throw new NotImplementedException();
}
}

#endregion
}
}

Bir sonraki yazımda ise interface ve abstract class arasındaki farklara değineceğim.
Görüşmek dileğiyle