C Sharp’da Interface Yapısı

C Sharp’da Interface Yapısı
C Sharp’da Interface Yapısı
Yazılım Kodu Kanalına Abone Olun

Herkese merhaba,

Bu yazıda C Sharp’da Interface Yapısı ile ilgili bilgi vermeye çalışacağım.

C Sharp’da Interface Nedir?

Interface‘ler, Class’lara rehberlik etmek üzere oluşturulan nesneye dayalı programlamanın en önemli özelliklerinden biridir. Class’ların hangi metotları ve özellikleri içermesi gerektiğini Interface’ler içerisinde bildiriyoruz. Interface‘ler kendisinden implement edilen bir sınıfa doldurulması zorunlu olan bazı özelliklerin aktarılmasını sağlayan bir kavramdır.

Interface‘lerde zorunlu olmamakla birlikte arayüz isimleri genellikle I harfiyle başlatılır. Böylece I ön ekini gören bir programcı onun bir arayüz olduğunu rahatlıkla anlar. Interface‘ler içerisinde özelliklerin ve metotların sadece bildirimi yapılır. Kısaca herhangi bir şekilde proptery’lere bir değer atanmaz sadece türleri ve isimleri yazılır, aynı şekilde metotların içerisine kodlar yazılmaz sadece geri dönüş türleri ve isimleri yazılır.

  1. Interface içerisinde yanlızca metodlar ve propertyler tanımlanır, Field tanımlanamaz.
  2. Interface üyeleri herhangi bir Access Modifier’a sahip değillerdir, Implement edilen class tarafından bütün üyeler erişilebilir. Bir Interface’in tüm üyeleri Public kabul edilir. Private, Protected, Static şeklimde tanımlanamazlar.
  3. Bir Interface’i, başka bir Interface’den türetebiliriz, fakat bir Class tan yada Struct dan türetemeyiz.
  4. Interface’ler loosely coupled uygulamalar oluşturmaya yardımcı olurlar. Aralarında bir interface oluşturarak iki class arasındaki bağlantıyı azaltırız. Bu şekilde, eğer bu Class’lardan biri değişirse, buna bağlı olan Class üzerinde hiçbir etkisi olmaz.
  5. Class yapılarımız birden fazla interface ile implement edilebilir.
  6. Interface’ler de Abstract sınıflar gibi new ile oluşturulamazlar.
  7. C Sharp’da Multiple Inheritance yoktur bir Class birden fazla Class’ı inherit edemez.
  8. C Sharp’da bir Class birden fazla Interface’i Implement edebilir fakat bunu Inheritance ile karıştırmamak gerekir, Interface yapısını Multiple Inheritance amacıyla kullanmak tamamen yanlış bir yaklaşımdır, interface yapısı Multiple Inheritance yapmak için oluşturulmamıştır.
  9. Interface’leri miras alan sınıflar, içerisinde tanımlanan tüm metodları Implemente etmek zorundadır.
  10. Inheritance yani kalıtım sayesinde kodu bir kez yazar ve tüm bu kodu tekrar yazmanıza gerek kalmadan yeniden kullanabiliriz.
  11. Interface ile yalnızca uygulama Class’ının içermesi gereken üyeleri implement ederiz.
  12. Interface’ler sınıfların referans numaralarını tutarlar.
  13. Interface’ler default olarak public kabul edilirler ve public olmak zorundadırlar.
  14. Interfaceler bir sınıfın sadece ne yapması gerektiğini belirtir nasıl yapacağını söylemez.
  15. Classlar somut birer nesneyken, Interfaceler Soyut nesnelerdir.
  16. Interface’ler Instance değişken içermezler. Herhangi bir şekilde değiştirilemezler.
  17. Interface’ler ile kod içerisinde büyük oranda soyutlama sağlanır.
  18. Interface’ler kod içerisindeki karmaşıklığı önemli derecede azaltmaktadır ve kod okunabilirliği açısından oldukça işlevseldir.
  19. Bir Interface implement edildiği tüm sınıflardan üretilen nesnelerin referanslarını alabilir.

Interface Yapısı ile hazırlamış olduğum örneği görmektesiniz.

using System;

namespace InteraceOrnek
{
    class Program
    {
        static void Main(string[] args)
        {
            IDosya file1 = new Dosya();
            //Dosya file2 = new Dosya(); şeklinde de oluşturulabilir.

            file1.Dosyaoku();
            file1.DosyaYaz("Yavuz Selim Kart");
        }

        interface IDosya
        {
            void Dosyaoku();
            void DosyaYaz(string yazi);
        }

        public class Dosya : IDosya
        {
            public void Dosyaoku()
            {
                Console.WriteLine("Dosya okundu");
            }

            public void DosyaYaz(string yazi)
            {
                Console.WriteLine("Dosyaya " + yazi + " yazısı yazıldı");
            }
        }

    }
}

C Sharp’da Interface Yapısı ile ilgili anlatacaklarım bu kadar.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

Aşağıdaki yazıları da inceleyebilirsiniz...

Sitedeki yazıları kopyalamak yasaktır.