Interface Kavramı (C#)

Batuhan Düzgün tarafından yayınlanmıştır 28. October 2010 22:05

Merhaba arkadaşlar bu yazımda sizlere Interface kavramını anlatacağım.Bu kavram daha çok C# ve Java programlama dillerinde sıkça karşımıza çıkmaktadır.Şimdi ilk iş olarak isterseniz bu kavramı tanımlayarak başlayalım.Nedir Interface ?
 
Interface Nedir?
 
Interface’ler aslında özet sınıflar ilebenzerdir.Arayüzlerde metodların gövdesi doldurulmaz.”interface” anahtarsözcüğüyle tanımlanırlar.Arayüzlerde metod gövdeleri alt sınıflardadolduruulmak üzere boş bırakılır sadece metodun dönüş tipi,ismi,erişim kısıtıtanımlanır.
 
Bir C# ve Java dillerinde "interface" anahtar sözcüğüyle tanımlanır.Interface'ler Nesneye Yönelimli Programlama açısından çok önemli bir yere sahiptir.Interface'lerde bir çok ortak özellikler toplanır.Interface'lerde metodların gövdeleri boş bırakılır.Bu boş bırakılan metod gövdeleri,kalıtım alan alt sınıflarda isteğe uygun olarak doldurulur.Şimdi bunları bir örnek üzerinde görelim.
 
Interface Örneğimiz ... 
 
Yapacağımız örnekte interface  olan "IDatabase" adlı bir yapımız mevcut,bu yapı içinde ise iki adet metodumuz vardır.Aşağıda metodların isimleri verilmiştir.
 
*VeritabaniTuru()
*VeritabaniSQL()
 
Kalıtım alan sınıflarımız ise aşağıdaki gibidir.
 
*MySQL
*Oracle
*MS_SQL_SERVER
 
Şimdi de yazdığım kodları vereyim.
 
IDatabase Interface'in Kodları ... 
 

interface IDatabase

{

       voidVeritabaniTuru();

       voidVeritabaniSQL();

} 
 
MySQL Sınıfı ...
 
 class MySQL:IDatabase

{

        #region IDatabase Members

 

        public void VeritabaniTuru()

        {

            Console.WriteLine("MySQL Veritabanı");

        }

 

        public void VeritabaniSQL()

        {

            Console.WriteLine("DELETE FROM TABLE WHERE AD='BA'");

        }

 

        #endregion

}

Dikkat ederseniz kalıtım aldırma işareti ":" iki noktadır.Java 'da ise eğer normal bir sınıf veya Abstract Sınıf'dan kalıtım alınacaksa, "extendes" kullanılır.Eğer ki Interface'den kalıtım alıncaksa " implements" sözcüğü kullanılır. 

 

MS_SQL_SERVER Sınıfı Kodları ... 

class MS_SQL_SERVER:IDatabase

    {

        #region IDatabase Members

 

        public voidVeritabaniTuru()

        {

            Console.WriteLine("MS SQL Server 2005");

        }

 

        public void VeritabaniSQL()

        {

            Console.WriteLine("INSERT INTO TABLE(X,Y,Z) VALUES('A','B','C')");

        }

 

        #endregion

    }

Oracle Sınıfı Kodları ... 

 class Oracle:IDatabase

    {

        #region IDatabase Members

 

        public void VeritabaniTuru()

        {

            Console.WriteLine("Oracle Database");

        }

 

        public void VeritabaniSQL()

        {

            Console.WriteLine("SELECT * FROM TABLE");

        }

 

        #endregion

    }

 
Program.cs Kodları ... 
 

class Program

    {

        static void Main(string[]args)

        {

            IDatabaseVeritabani = new Oracle();

            Veritabani.VeritabaniTuru();

            Veritabani.VeritabaniSQL();

            /////////////////////////////////

            Veritabani = new MySQL();

            Veritabani.VeritabaniTuru();

            Veritabani.VeritabaniSQL();

            ////////////////////////////////

            Veritabani = new MS_SQL_SERVER();

            Veritabani.VeritabaniTuru();

            Veritabani.VeritabaniSQL();

            Console.ReadLine();

        }

    } 
 
Yukarıdaki koda dikkat ederseniz.IDatabase tipinden bir referans değişkene "new  Oracle()" şeklinde bir nesne oluşturup atayabiliyoruz.Bunun sebebi Oracle sınıfının ata sınıfının IDatabase olmasından ötürüdür.Burada Çok Biçimlilik kuralı uygulanmıştır.
 
Şimdi de son olarak sonuçlara bakalım.
 
 
 
Bir makalemin daha sonuna gelmiş bulunuyorum.Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
 
Sakarya Üniversitesi
 
Bilgisayar Mühendisliği 

Currently rated 3.3 by 3 people

  • Currently 3.333333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Nesneye Yönelik Programlama

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  November 2018  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Yazıları geniş takvimde göster