Skip to content

الفصل 11: البرمجة الكائنية المتقدمة

📖 المستوى: متوسط  |  ⏱ الوقت المقدّر: 60 دقيقة  |  📝 تمارين: 7

ما ستتعلم في هذا الفصل

  • الوراثة المتعددة المستويات
  • تحميل العوامل الزائد
  • الأعضاء الساكنة (ساكن)
  • الأصناف المجردة (مجرد)
  • الخصائص (Properties)
  • أنماط التصميم الكائنية

11.1 الوراثة المتقدمة

sad
صنف شكل
    متغير اللون = "أسود"

    دالة المساحة()
        ارجع 0
    نهاية

    دالة وصف()
        اطبع_سطر("شكل بلون " + هذا.اللون)
    نهاية
نهاية

صنف دائرة يرث شكل
    متغير نصف_القطر

    باني(نصف_القطر، لون)
        هذا.نصف_القطر = نصف_القطر
        هذا.اللون = لون
    نهاية

    دالة المساحة()
        ارجع 3.14159 * هذا.نصف_القطر ** 2
    نهاية
نهاية

صنف مربع يرث شكل
    متغير الضلع

    باني(ضلع)
        هذا.الضلع = ضلع
    نهاية

    دالة المساحة()
        ارجع هذا.الضلع ** 2
    نهاية
نهاية

# تعدد الأشكال (Polymorphism)
متغير أشكال = [
    جديد دائرة(5، "أحمر")،
    جديد مربع(4)
]

لكل شكل في أشكال
    اطبع_سطر("المساحة: " + شكل.المساحة())
نهاية

11.2 تحميل العوامل الزائد

sad
صنف متجه
    متغير س
    متغير ص

    باني(س، ص)
        هذا.س = س
        هذا.ص = ص
    نهاية

    # تحميل عامل الجمع
    عامل +(آخر)
        ارجع جديد متجه(هذا.س + آخر.س، هذا.ص + آخر.ص)
    نهاية

    # تحميل عامل المقارنة
    عامل ==(آخر)
        ارجع هذا.س == آخر.س و هذا.ص == آخر.ص
    نهاية

    دالة نص()
        ارجع "(" + هذا.س + "، " + هذا.ص + ")"
    نهاية
نهاية

متغير أ = جديد متجه(3، 4)
متغير ب = جديد متجه(1، 2)
متغير ج = أ + ب
اطبع_سطر(ج.نص())    # (4، 6)

11.3 الأعضاء الساكنة

sad
صنف عداد
    ساكن متغير العدد = 0

    باني()
        عداد.العدد = عداد.العدد + 1
    نهاية

    ساكن دالة كم_كائن()
        ارجع عداد.العدد
    نهاية
نهاية

جديد عداد()
جديد عداد()
جديد عداد()
اطبع_سطر("عدد الكائنات: " + عداد.كم_كائن())  # 3

11.4 الخصائص (Getter/Setter)

sad
صنف شخص
    خاص متغير _عمر = 0

    باني(عمر)
        هذا._عمر = عمر
    نهاية

    خاصية العمر
        احصل()
            ارجع هذا._عمر
        نهاية
        عيّن(قيمة)
            إذا (قيمة >= 0 و قيمة <= 150)
                هذا._عمر = قيمة
            نهاية
        نهاية
    نهاية
نهاية

متغير ش = جديد شخص(25)
اطبع_سطر(ش.العمر)    # 25
ش.العمر = 30
اطبع_سطر(ش.العمر)    # 30

تمارين

تمرين 1: نظام أشكال هندسية

أنشئ تسلسل وراثة لأشكال (شكل ← مستطيل ← مربع) مع حساب المساحة والمحيط.

💡 الحل
sad
صنف شكل
    دالة المساحة()
        ارجع 0
    نهاية
    دالة المحيط()
        ارجع 0
    نهاية
نهاية

صنف مستطيل يرث شكل
    متغير عرض
    متغير ارتفاع

    باني(عرض، ارتفاع)
        هذا.عرض = عرض
        هذا.ارتفاع = ارتفاع
    نهاية

    دالة المساحة()
        ارجع هذا.عرض * هذا.ارتفاع
    نهاية

    دالة المحيط()
        ارجع 2 * (هذا.عرض + هذا.ارتفاع)
    نهاية
نهاية

صنف مربع يرث مستطيل
    باني(ضلع)
        الأساس(ضلع، ضلع)
    نهاية
نهاية

متغير م = جديد مربع(5)
اطبع_سطر("مساحة المربع: " + م.المساحة())  # 25
اطبع_سطر("محيط المربع: " + م.المحيط())    # 20

مُرخَّص بموجب رخصة MIT