Örnekle C#'ta Arayüz Nedir?
⚡ Akıllı Özet
C# dilinde arayüz, bir bağlantıyı tanımlar.tracBu, bir sınıfın hangi yöntemleri ve özellikleri uygulaması gerektiğini belirten, ancak gerçek kodu sağlamayan bir yapıdır. Uygulayan sınıf, somut davranışı sağlar ve bu da ilgisiz türler arasında gevşek bağlantı ve çoklu kalıtımı mümkün kılar.
C#'ta Arayüz Nedir?
An arayüzey C#'da bir yapıyı tanımlamak için bir sınıfla birlikte kullanılır.tracBu, bir sınıfın bir uygulamaya ne sağlayacağına dair bir anlaşmadır. Arayüz, bir sınıfın hangi işlemleri gerçekleştirebileceğini tanımlar. Bir arayüz, özellikleri ve yöntemleri bildirir. Bir yöntemin tam olarak ne yapacağını tanımlamak sınıfa kalmıştır.
Konsol uygulamamızda sınıfları değiştirerek bir arayüz örneğine bakalım. Bir arayüz kullanılarak çalıştırılabilecek hiçbir şey olmadığından kodu çalıştırmayacağımızı unutmayın.
C# Arayüzü Örneği
Bir arayüz sınıfı oluşturalım. Sınıfın adı "Guru99Interface.” Ana sınıfımız daha sonra tanımlanan arayüzü genişletecektir. Tüm kod Program.cs dosyasına yazılmalıdır.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface IGuru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : IGuru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Açıklama:-
Burada kodun önemli bölümlerini açıklıyoruz
- Öncelikle " adlı bir arayüz tanımlıyoruz."Guru99Arayüz.” “Arayüz” anahtar kelimesinin bir arayüzü tanımlamak için kullanıldığına dikkat edin.
- Sonra, arayüzümüz tarafından kullanılacak yöntemleri tanımlıyoruz. Bu durumda, önceki tüm örneklerde kullanılan aynı yöntemleri tanımlıyoruz. Bir arayüzün yalnızca yöntemleri bildirdiğini, içlerindeki kodu tanımlamadığını unutmayın.
- Sonra biz de kendi üretimimizi yaparız. Guru99Tutorial sınıfı, arayüzü genişletir. Burada, arayüzde tanımlanan çeşitli yöntemleri tanımlayan kodu yazıyoruz. Bu tür bir kodlama aşağıdaki sonuçları doğurur.
- Bu, sınıfın, Guru99Tutorial, yalnızca "SetTutorial" ve "GetTutorial" yöntemleri için gerekli olan kodu ekler, başka hiçbir şey eklemez.
- Ayrıca, arayüzün bir kontrol mekanizması gibi davranmasını da sağlar.tracT. bu sınıf sözleşmeye uymak zorundadırtracYani eğer...tracEğer "SetTutorial" ve "GetTutorial" adında iki metoda sahip olması gerektiğini söylüyorsa, aynen öyle olmalıdır.
C# Arayüzü ve Abs Karşılaştırmasıtract Sınıfı
Yeni başlayanlar için sıkça sorulan bir soru, C# arayüzünün bir başka arayüzden nasıl farklı olduğudur. abstract sınıfıİkisi de bir çatışmayı tanımlar.tracDiğer tipler de bunu takip eder, ancak farklı tasarım amaçlarına hizmet ederler.
Başlıca farklılıklar aşağıda listelenmiştir:
- Uygulama: Bir arayüz yalnızca bildirimler içerirken, bir mutlak değer yalnızca bildirimler içerir.tracT sınıfı hem abs sağlayabilirtract üye ve tamamen uygulanmış yöntemler.
- Çoklu kalıtım: Bir sınıf birçok arayüzü uygulayabilir ancak yalnızca bir mutlak sınıfı miras alabilir.tract sınıfı.
- Belirtmek, bildirmek: Bir karın kasıtracBir sınıf, veri içeren alanlar, yapıcılar ve özellikler tutabilirken, bir arayüz örnek durumunu saklayamaz.
- Erişim değiştiriciler: Abstract sınıfı üyeleri genel, korumalı veya özel olabilirken, klasik arayüz üyeleri örtük olarak geneldir.
- Kullanım çantası: Birbiriyle ilgisi olmayan türler arasında bir yetenek eklemek için bir arayüz kullanın ve mutlak bir değer tanımlayın.tracBirbirine yakın türler arasında ortak kod paylaşmak için kullanılan sınıf.
Özetle, bir arayüz bir sınıfın neler yapabileceğini tanımlarken, bir soyutlama (abstract) ise sınıfın neler yapabileceğini açıklar.tract sınıfı, bunun nasıl yapılacağının bir bölümünü de tanımlayabilir.
C#'da Birden Çok Arayüz Nasıl Uygulanır?
Sınıf kalıtımının aksine, C# tek bir sınıfın birden fazla arayüzü uygulamasına izin verir. Bu sayede dil, aynı anda birden fazla temel sınıfı miras almanın getirdiği belirsizlik olmadan güvenli bir çoklu kalıtım biçimi sunar.
Birden fazla arayüzü uygulamak için, bunları sınıf adından sonra listeleyin ve her birini virgülle ayırın. Ardından sınıf, uyguladığı her arayüzde tanımlanan her yöntemi tanımlamalıdır.
) 1 Adım Her birinin kendi metodu olan iki arayüz tanımlayın.
) 2 Adım Her iki arayüzü de uygulayan bir sınıf oluşturun ve arayüz adlarını virgülle ayırın.
) 3 Adım Her arayüzde tanımlanan her üye için bir metot gövdesi sağlayın.
Aşağıdaki örnek, hem I arayüzünü hem de I arayüzünü uygulayan bir Document sınıfını göstermektedir.Readable ve bir IWritable arayüzü.
using System; namespace DemoApplication { interface IReadable { void Read(); } interface IWritable { void Write(); } class Document : IReadable, IWritable { public void Read() { Console.WriteLine("Reading the document"); } public void Write() { Console.WriteLine("Writing to the document"); } static void Main(string[] args) { Document doc = new Document(); doc.Read(); doc.Write(); Console.ReadKey(); } } }
Code Açıklama:-
- İki arayüz tanımlıyoruz, IReadable ve IWritable. Her arayüz, gövdesi olmayan tek bir metot tanımlar.
- Document sınıfı, iki nokta üst üste işaretinden sonra her iki arayüzü de virgülle ayırarak listeler; bu nedenle her iki koşula da uymayı kabul eder.tracts.
- Sınıf daha sonra Okuma ve Yazma yöntemlerini tanımlar. Atlaping Her iki yöntem de derleme hatasına neden olur.
- Main metodu bir Document nesnesi oluşturur ve her iki metodu da çağırarak sınıfın iki arayüzü de karşıladığını kanıtlar.
Program çalıştırıldığında şunu yazdırır: Belgeyi okumak ilk satırda ve Belgeye yazma İkinci satırda. Bu desen her bir tüketiciyi korur.tracKüçük ve odaklanmış yapısı, Document sınıfının test edilmesini ve genişletilmesini kolaylaştırır.
C#'da Arayüz Kullanmanın Avantajları
Arayüzler, kodu esnek ve bakımı kolay hale getirdikleri için profesyonel C# projelerinde yaygın olarak kullanılır. Kodunuzu istediğiniz gibi programlamanıza olanak tanırlar.tracsomut bir sınıfa değil, t'ye.
Başlıca avantajları şunlardır:
- Gevşek kaplin: Code Bu, belirli bir sınıfa değil, arayüze bağlıdır; bu nedenle, uygulamanın değiştirilmesi çağıranları bozmaz.
- Çoklu kalıtım: Bir sınıf, düz sınıf kalıtımının izin vermediği şekilde, birden fazla arayüzden davranış miras alabilir.
- Test edilebilirlik: Arayüzler, birim testleri sırasında gerçek bir sınıfı sahte bir nesneyle değiştirmeyi kolaylaştırır.
- Bağımlılık enjeksiyonu: Çerçeveler, çalışma zamanında bir arayüz uygulamasını enjekte eder; bu, SOLID prensiplerinin temel fikirlerinden biridir.
- Tutarlılık: Her uygulayıcı sınıfın aynı üye kümesini sağlaması zorunlu olduğundan, API öngörülebilir kalır.
Bu avantajlar nedeniyle, arayüzler çoğu modern C# tasarım kalıbının ve uygulama çerçevesinin merkezinde yer alır.


