Tasarım Kodlama

C# interface Nasıl Kullanılır?

C# Interface Nedir?

Önceki bölümlerde soyut sınıflara bir göz atmıştık. Interface(Arayüz) soyut sınıflara çok benzer ve hiçbir örneğinin oluşturulamayacağı bir yapıdır. Ancak, hiçbir yöntem gövdesine izin verilmediğinden arabirimler soyut sınıflardan bile daha soyuttur. Dolayısıyla bir arayüz, soyut yöntemlerden başka hiçbir şeyi olmayan soyut bir sınıf gibidir ve gerçek kodlu hiçbir yöntem olmadığı için herhangi bir alana ihtiyaç yoktur.

Ancak, dizin oluşturuculara ve olaylara ek olarak özelliklere de izin verilir. Bir arabirimi bir sözleşme olarak düşünebilirsiniz – tüm yöntemleri ve özellikleri uygulamak için onu uygulayan bir sınıf olmalıdır. Ancak en önemli fark, sınıfların tek bir temel sınıftan daha fazlasını miras aldığı C# çoklu kalıtıma izin vermese de, aslında birden çok arabirimin uygulanmasına izin vermesidir!

C# interface Nasıl Kullanılır?

Peki, tüm bunlar kodda nasıl görünüyor? İşte oldukça eksiksiz bir örnek. Bir göz atın, belki kendi başınıza deneyin ve ardından tam açıklama için okumaya devam edin:

C# interface örneği

interface ilan ettiğimiz ortadan başlayalım. Gördüğünüz gibi, bir sınıf bildiriminden tek fark, kullanılan anahtar kelimedir – class yerine interface kullandık. Ayrıca, arayüzün adının önüne Arayüz için bir I eklenir – bu yalnızca bir kodlama standardıdır ve bir gereklilik değildir. Arayüzlerinizi istediğiniz gibi çağırabilirsiniz, ancak bunlar sınıflar gibi o kadar çok kullanıldığı için kodunuzun bazı bölümlerindeki farkı söylemekte zorlanabilirsiniz, I öneki oldukça mantıklıdır.

Ardından, Tanim() yöntemini ve ardından hem get hem de set anahtar kelimesine sahip Ad özelliğini, bunu okunabilir ve yazılabilir bir özellik haline getiririz. Ayrıca erişim değiştiricilerinin (public, private, protected vb.) eksikliğini de fark edeceksiniz ve bunun nedeni bir arabirimde bunlara izin verilmemesidir – bunların tümü varsayılan olarak herkese açıktır.

Sıradaki Kopek sınıfımız. Sınıf adı ile class/interface arasındaki iki nokta üst üste alt sınıflandırılır/uygulanırken, başka bir sınıftan miras almak gibi göründüğüne dikkat edin.

Ancak bu durumda, aynı sınıf için virgülle basitçe ayrılmış iki arabirim uygulanır. İstediğiniz kadar arabirim uygulayabilirsiniz, ancak bu durumda yalnızca ikisini uygularız – kendi IHayvan arabirimimiz ve sıralanabilen sınıflar için paylaşılan bir arabirim olan .NET IComparable arabirimi uyguladık. Şimdi görebileceğiniz gibi, IHayvan arayüzünden hem yöntemi hem de özelliği, ayrıca IComparable arayüzünden bir CompareTo yöntemini uyguladık.

Sonuç

Şimdi düşünebilirsiniz: Tüm yöntemleri ve özellikleri uygulayarak tüm işi kendi başımıza yapmak zorundaysak, neden uğraşalım ki? Ve neden zaman ayırmaya değer olduğuna dair çok iyi bir örnek, örneğimizin başında verilmiştir. Burada bir listeye bir grup Kopek nesnesi ekliyoruz ve ardından listeyi sıralıyoruz. Ve liste köpekleri nasıl sıralayacağını nereden biliyor? Çünkü Kopek sınıfımız, iki köpeğin nasıl karşılaştırılacağını söyleyebilen bir CompareTo yöntemine sahiptir. Ve liste, Kopek nesnemizin tam olarak bunu yapabileceğini ve köpekleri karşılaştırmak için hangi yöntemin çağrılacağını nereden biliyor? Çünkü bunu bir CompareTo yöntemi vaat eden bir arayüz uygulayarak söyledik! Arayüzlerin gerçek güzelliği budur.

Yorum yap