انتزاع (Abstraction) در C#

انتزاع یکی از اصول مهم برنامه‌نویسی شیءگرا است که به ما کمک می‌کند فقط جزئیات مهم را نمایش دهیم و پیچیدگی‌های داخلی را مخفی کنیم.

Abstraction چیست؟

در انتزاع، ما فقط "چه کاری انجام می‌شود" را مشخص می‌کنیم، نه "چطور انجام می‌شود". این کار معمولاً با استفاده از abstract class یا interface انجام می‌شود.

Abstract Class


public abstract class Animal
{
    public abstract void MakeSound();

    public void Sleep()
    {
        Console.WriteLine("Sleeping...");
    }
}

پیاده‌سازی کلاس فرزند


public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Bark");
    }
}

public class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Meow");
    }
}

استفاده از Abstraction


Animal a1 = new Dog();
Animal a2 = new Cat();

a1.MakeSound();
a2.MakeSound();

Interface

Interface یک قرارداد (Contract) است که کلاس‌ها باید آن را پیاده‌سازی کنند.


public interface IPayment
{
    void Pay();
}

پیاده‌سازی Interface


public class CreditCardPayment : IPayment
{
    public void Pay()
    {
        Console.WriteLine("Pay by Credit Card");
    }
}

public class PaypalPayment : IPayment
{
    public void Pay()
    {
        Console.WriteLine("Pay by PayPal");
    }
}

چرا Abstraction مهم است؟

  • کاهش پیچیدگی سیستم
  • افزایش خوانایی کد
  • جدا کردن منطق از پیاده‌سازی
  • افزایش قابلیت توسعه

مثال واقعی در پروژه


public interface IEmailService
{
    void SendEmail(string to, string subject);
}

public class SmtpEmailService : IEmailService
{
    public void SendEmail(string to, string subject)
    {
        Console.WriteLine("Sending email via SMTP");
    }
}

جمع‌بندی

Abstraction به ما کمک می‌کند سیستم‌های پیچیده را ساده‌تر طراحی کنیم و فقط روی رفتارهای مهم تمرکز کنیم.