C# - Abstraction

C# - التجريد (Abstraction)

التجريد هو مبدأ في البرمجة الكائنية (OOP) يهدف إلى إخفاء التفاصيل المعقدة والتركيز فقط على ما يهم. في C#، يُطبق التجريد باستخدام الكلاسات المجردة (abstract classes) أو الواجهات (interfaces).


🧠 لماذا نستخدم التجريد؟

  • لإخفاء منطق التنفيذ عن المستخدم أو الكلاس المشتق.
  • لتحديد هيكل عام يُجبر الكلاسات الأخرى على اتباعه.
  • لفصل "ما يجب فعله" عن "كيفية فعله".

📌 استخدام abstract class:


abstract class Animal
{
    public abstract void MakeSound(); // لا تحتوي على تنفيذ
    public void Sleep()
    {
        Console.WriteLine("ينام...");
    }
}

class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("القط يقول: مياو");
    }
}

class Program
{
    static void Main()
    {
        Animal a = new Cat();
        a.MakeSound();
        a.Sleep();
    }
}

✅ الدالة MakeSound() مجردة، وتُجبر الكلاس Cat على تنفيذها.


⚡ الفرق بين abstract و interface:

الخاصية abstract class interface
يُستخدم مع وراثة تطبيق (Implementation)
دوال تحتوي على منطق؟ ✅ ممكن ❌ لا، فقط التوقيع (حتى C# 7)
وراثة متعددة ❌ لا تدعم ✅ ممكن تطبيق أكثر من واجهة
أعضاء خاصة ✅ ممكن ❌ غير ممكن

🎯 ملاحظات:

  • الكلاس المجرد لا يمكن إنشاء كائن منه مباشرة.
  • التجريد يُستخدم كثيرًا في تصميم الأنظمة المعتمدة على العقود (Contract-based design).
  • يمكن للكلاس المجرد أن يحتوي على دوال عادية ودوال مجردة.

تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework