قائمة الدروس

مفهوم البرمجة الشيئية (OOP)

مفهوم البرمجة الشيئية

البرمجة الشيئية (Object-Oriented Programming) هي منهجية برمجية تستند إلى مفهوم الكائنات. يتمثل هذا المفهوم في تنظيم البرمجة حول الكائنات التي تكون مجموعات من البيانات والوظائف المرتبطة بها. الكائنات يمكن أن تتفاعل مع بعضها البعض من خلال الإرث والتفاضل والاستخدام.

تتميز البرمجة الشيئية بالعناصر الرئيسية التالية:

مثال: تعريف كائن واستخدامه

فلنقم بإنشاء تعريف بسيط لكائن "سيارة" واستخدامه:


// تعريف التصنيف (الصف) للسيارة
class Car
{
    // الخصائص (البيانات)
    public string Model;
    public int Year;

    // الوظائف (الأساليب)
    public void StartEngine()
    {
        Console.WriteLine("تشغيل المحرك");
    }

    public void StopEngine()
    {
        Console.WriteLine("إيقاف المحرك");
    }
}

// في البرنامج الرئيسي
class Program
{
    static void Main()
    {
        // إنشاء كائن من السيارة
        Car myCar = new Car();

        // تعيين الخصائص
        myCar.Model = "Toyota Camry";
        myCar.Year = 2022;

        // استخدام الوظائف
        Console.WriteLine($"نموذج السيارة: {myCar.Model}");
        Console.WriteLine($"سنة الصنع: {myCar.Year}");
        myCar.StartEngine();
        myCar.StopEngine();
    }
}
    

النتيجة: نموذج السيارة: Toyota Camry سنة الصنع: 2022 تشغيل المحرك إيقاف المحرك

معدلات الوصول (Access Modifiers) في #C

public

معدل الوصول public يسمح للكود بالوصول إلى العناصر المعنية من أي مكان في البرنامج. يمكن الوصول إلى الأعضاء العامة من داخل نفس الكلاس أو من خلال إنشاء كائن من هذا الكلاس في أي مكان آخر في البرنامج.


public class Example
{
    public int PublicField;

    public void PublicMethod()
    {
        // يمكن الوصول إليها من أي مكان
    }
}

private

معدل الوصول private يقيد الوصول إلى العناصر المعنية بشكل كامل إلى داخل الكلاس الذي تم فيه تعريفه. بمعنى آخر، لا يمكن الوصول إلى الأعضاء الخاصة من خارج الكلاس نفسه.


public class Example
{
    private int PrivateField;

    private void PrivateMethod()
    {
        // يمكن الوصول إليها فقط من داخل الكلاس
    }
}

protected

معدل الوصول protected يسمح بالوصول إلى العناصر المعنية من داخل الكلاس الذي تم فيه تعريفه، وأيضًا من داخل الكلاسات المشتقة (الموروثة) من هذا الكلاس. بمعنى آخر، يمكن استخدامها في تعريف العناصر التي يجب أن تكون مرئية للكلاسات الفرعية.


public class Parent
{
    protected int ProtectedField;
}

public class Child : Parent
{
    public void AccessParentField()
    {
        ProtectedField = 10; // يمكن الوصول إلى الحقل المحمي من الكلاس الأب
    }
}

internal

معدل الوصول internal يسمح بالوصول إلى العناصر المعنية من نفس التجميع (assembly) الذي تم فيه تعريفه. لا يمكن الوصول إليها من خارج هذا التجميع. يستخدم هذا المعدل عادة عندما ترغب في مشاركة العناصر بين الكلاسات في نفس التجميع دون السماح بالوصول إليها من خارجه.


// التجميع الرئيسي
public class MainAssemblyClass
{
    internal int InternalField; // يمكن الوصول إليها من نفس التجميع
}

protected internal

معدل الوصول protected internal يجمع بين معدلي protected و internal. يمكن الوصول إلى العناصر المعنية من داخل الكلاس الذي تم فيه تعريفه وأيضًا من داخل الكلاسات المشتقة من هذا الكلاس، ومن داخل نفس التجميع. بمعنى آخر، يسمح بالوصول من داخل الكلاس وأيضًا من خارجه إذا كانت الوصول من نفس التجميع.


public class Parent
{
    protected internal int ProtectedInternalField; // يمكن الوصول إليها من داخل الكلاس ومن نفس التجميع
}

public class Child : Parent
{
    public void AccessParentField()
    {
        ProtectedInternalField = 20; // يمكن الوصول إليها من الكلاس الابن ومن نفس التجميع
    }
}

private protected

معدل الوصول private protected هو الأقل شيوعًا. يمكن الوصول إلى العناصر المعنية من داخل الكلاس الذي تم فيه تعريفه وأيضًا من داخل الكلاسات المشتقة من هذا الكلاس، ولكن فقط إذا كانت الوصول من نفس التجميع. هذا يتيح لك تقديم الوصول الحماية داخليًا بين الكلاسات في نفس التجميع.


public class Parent
{
    private protected int PrivateProtectedField; // يمكن الوصول إليها من داخل الكلاس ومن نفس التجميع
}

public class Child : Parent
{
    public void AccessParentField()
    {
        PrivateProtectedField = 30; // يمكن الوصول إليها من الكلاس الابن ومن نفس التجميع
    }
}

Coming Soon

-

-

Coming Soon

-