IRONSOFTWAREHOME

C# Soyut Sınıfı Anlamak

C# Soyut Sınıfı Anlamak

Tim Corey

19m 59s

C#'ta soyut sınıflar, genellikle geliştiriciler arasında sorulara neden olan temel bir kavramdır. Tim Corey'in videosunda, "C# Soyut Sınıflar - Onlar Nedir, Nasıl Kullanılırlar ve En İyi Uygulamalar" Tim Corey soyut sınıfların ne olduğunu, nasıl kullanılacağını ve en iyi uygulamalarını ele alıyor. Bu makale, videosunun önemli noktalarını zaman damgalarını referans olarak kullanarak özetlemektedir.

Giriş

Tim (0:00) soyut sınıfların amaçları, işlevselliği ve önemi açısından genellikle sorgulandığını açıklar. Soyut bir sınıfı, işlevsellik açısından tam bir temel sınıf ile bir arayüz arasında yer alan bir karışım olarak tanımlar.

Demo Uygulama Gezintisi

(0:59'da), Tim soyut sınıfları göstermek için bir demo uygulaması sunar. Uygulama, bir konsol uygulaması ve veritabanı işlemlerini simüle eden iki veri erişim sınıfı içeren bir sınıf kütüphanesinden oluşur. Bu sınıfların, soyut sınıflar, temel sınıflar ve arayüzler arasındaki benzerlikleri ve farkları göstermek için Tim tarafından kullanılan veri yükleme ve saklama için yöntemleri vardır.

İşte temel sınıf ve türeyen sınıflar için başlangıç kodu:

// Base Class Definition
public class DataAccess
{
    // Method to load the connection string
    public string LoadConnectionString()
    {
        Console.WriteLine("Loading the connection string...");
        return "Test Connection String";
    }

    // Method to load data
    public void LoadData()
    {
        Console.WriteLine("Loading data...");
    }

    // Method to save data
    public void SaveData()
    {
        Console.WriteLine("Saving data...");
    }
}

// Derived class that inherits from DataAccess
public class SQLDataAccess : DataAccess
{
    // Overriding LoadData method to specify SQL data loading
    public new void LoadData()
    {
        Console.WriteLine("Loading SQL data...");
    }

    // Overriding SaveData method to specify SQL data saving
    public new void SaveData()
    {
        Console.WriteLine("Saving SQL data...");
    }
}

// Derived class that inherits from DataAccess
public class SQLiteDataAccess : DataAccess
{
    // Overriding LoadData method to specify SQLite data loading
    public new void LoadData()
    {
        Console.WriteLine("Loading SQLite data...");
    }

    // Overriding SaveData method to specify SQLite data saving
    public new void SaveData()
    {
        Console.WriteLine("Saving SQLite data...");
    }
}

Bir Temel Sınıf Oluşturma

Tim, (3:21'de) bir temel sınıf nasıl oluşturulur açıklıyor. Ortalanmış metodlari, LoadConnectionString gibi, DataAccess adlı bir temel sınıfa taşımak için kodu yeniden düzenler. Bu temel sınıftan türeyen, SQLDataAccess ve SQLiteDataAccess gibi diğer sınıflar, kod yinelenmesini azaltarak bu ortak yöntemlere erişim kazanır.

Temel Sınıfı Soyut Hale Getirme

(5:56'da) Tim temel sınıfı bir soyut sınıf haline getiriyor ve farklılıkları göstermek için. DataAccess'yi soyut bir sınıfa dönüştürerek, doğrudan örneklenmesini engeller. Bunun yerine, yalnızca SQLiteDataAccess ve SQLDataAccess gibi bu soyut sınıfı miras alan sınıflar, yöntemlerini uygulayabilir ve paylaşılan işlevselliğini kullanabilir.

İşte DataAccess soyut bir sınıfa dönüştüğünde kodda nasıl değişiklikler olur:

// Abstract Base Class Definition
public abstract class AbstractDataAccess
{
    // Shared method to load connection string
    public string LoadConnectionString()
    {
        Console.WriteLine("Loading the connection string...");
        return "Test Connection String";
    }

    // Abstract methods that must be implemented by derived classes
    public abstract void LoadData();
    public abstract void SaveData();
}

Soyut Sınıfta Arayüz Bölümü

Tim, (8:34'te) soyut sınıfların arayüzler ve temel sınıfların özelliklerini nasıl harmanladığını açıklar. public abstract void LoadData(); ve public abstract void SaveData(); gibi soyut yöntemleri, soyut sınıfta implemente etmeden beyan eder. Bu, herhangi bir türeyen sınıfın bu yöntemleri uygulamasını zorunlu kılar, arayüzlerin çalışma şekline benzer.

Soyut Sınıflarda Yöntemlerin Üzerini Yazma

Tim, (12:56'da) bir soyut sınıfta yöntemlerin nasıl üzerine yazılacağını tartışıyor. Ana sınıfta bir metodu virtual olarak beyan edebileceğinizi, türetilen sınıfların onu geçersiz kılmasına olanak tanıdığını gösterir. Bu yaklaşım, yöntemlerin türetilmiş sınıflarda nasıl uygulandığı ve genişletildiği konusunda esneklik sağlar.

İşte yöntem üzerine yazmalarını gösteren türetilmiş sınıf kodu:

// Derived class from abstract base class
public class SQLDataAccessWithAbstract : AbstractDataAccess
{
    // Implementing the abstract LoadData method
    public override void LoadData()
    {
        Console.WriteLine("Loading SQL data...");
    }

    // Implementing the abstract SaveData method
    public override void SaveData()
    {
        Console.WriteLine("Saving SQL data...");
    }
}

Soyut Sınıflar Ne Zaman Kullanılır

Tim, (16:01'de) soyut sınıfların her gün kullanılmaması gerektiğini ancak belirli senaryolarda değerli olduklarını tavsiye eder. İki sınıf benzer koda sahip olduğu için soyut sınıfların kullanılmaması konusunda uyarıda bulunur. Bunun yerine, 'is a' ilişkisinin sürdürülmesini vurguluyor ve uygun olduğunda ortak kodlar için yardımcı yöntemler veya sınıflar düşünülmesini öneriyor.

İşte kullanımını gösteren ana program kodu:

// Main Program
class Program
{
    static void Main(string[] args)
    {
        // Using Base Class
        SQLDataAccess sqlData = new SQLDataAccess();
        Console.WriteLine(sqlData.LoadConnectionString());
        sqlData.LoadData();
        sqlData.SaveData();

        Console.WriteLine("--------------------------");

        // Using Derived Class from Abstract Base Class
        SQLDataAccessWithAbstract sqlDataAbstract = new SQLDataAccessWithAbstract();
        Console.WriteLine(sqlDataAbstract.LoadConnectionString());
        sqlDataAbstract.LoadData();
        sqlDataAbstract.SaveData();

        Console.WriteLine("--------------------------");

        // You can't instantiate Abstract Base Class directly
        // AbstractDataAccess abstractData = new AbstractDataAccess(); 
        // Error: Cannot create an instance of the abstract class
    }
}

Sonuç

Tim Corey'nin C# soyut sınıflar konusundaki derinlemesine incelemesi, onların amacı, işlevselliği ve gerçek dünyadaki uygulamaları hakkında net ve pratik bir anlayış sunuyor. Demo uygulaması aracılığıyla, soyut sınıfların temel sınıflar ve arayüzler arasındaki boşluğu nasıl doldurduğunu gösteriyor, geliştiricilerin esnek ve sürdürülebilir kod yapıları oluşturmalarını sağlıyor.

Soyut sınıfların doğru senaryolarda kullanımı ve aşırı kullanımından kaçınma gibi en iyi uygulamalar vurgulanarak, Tim, geliştiricilere bilinçli tasarım seçimleri yapmaları için araçlar sunuyor. Bu kavramlara sağlam bir şekilde hakim olan geliştiriciler, nesneye yönelik programlama becerilerini geliştirebilir ve sağlam C# uygulamaları oluşturabilirler.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez