#️⃣ شرح C#

التجريد والواجهات

الصنف المجرّد (abstract)

لا يُنشأ منه كائن — قالب للأصناف الوارثة:

abstract class Shape
{
    public abstract double Area();   // بلا جسم — على الوارث تنفيذها

    public void Describe() => Console.WriteLine($"المساحة: {Area()}");
}

class Circle : Shape
{
    public double R;
    public Circle(double r) { R = r; }
    public override double Area() => 3.14 * R * R;
}

الواجهة (interface)

عقد من الأعضاء يلتزم الصنف بتنفيذها — تدعم التعدّد:

interface IDrawable
{
    void Draw();
}

interface IClickable
{
    void Click();
}

class Button : IDrawable, IClickable
{
    public void Draw() => Console.WriteLine("رسم");
    public void Click() => Console.WriteLine("نقر");
}

💡 الاصطلاح: أسماء الواجهات تبدأ بـ I (مثل IEnumerable).

abstract مقابل interface

abstract classinterface
الوراثةواحدةمتعدّدة
التنفيذقد يحوي كودًاتواقيع (و default منذ C# 8)
متىأصناف متقاربة تشترك في كودقدرة مشتركة لأنواع مختلفة

🎯 التالي: معالجة الاستثناءات.