Skip to content

الأصناف والبرمجة الكائنية

تعريف صنف

sad
صنف حيوان
  # الحقول
  متغير اسم
  متغير صوت

  # الباني (Constructor)
  باني(اسم، صوت)
    هذا.اسم  = اسم
    هذا.صوت  = صوت
  نهاية

  # دالة
  دالة تحدث()
    اطبع_سطر(هذا.اسم + " يقول: " + هذا.صوت)
  نهاية

  # دالة نصية
  دالة نصي()
    ارجع "حيوان(" + هذا.اسم + ")"
  نهاية
نهاية

متغير قطة = جديد حيوان("قطة"، "مياو")
قطة.تحدث()  # قطة يقول: مياو

الوراثة

sad
صنف كلب يرث حيوان
  متغير السلالة

  باني(اسم، سلالة)
    الأساس(اسم، "هاو")
    هذا.السلالة = سلالة
  نهاية

  # تجاوز الدالة (Override)
  دالة تحدث()
    اطبع_سطر(هذا.اسم + " (" + هذا.السلالة + "): هاو هاو!")
  نهاية

  دالة العب()
    اطبع_سطر(هذا.اسم + " يلعب بالكرة 🎾")
  نهاية
نهاية

متغير ريكس = جديد كلب("ريكس"، "لابرادور")
ريكس.تحدث()  # ريكس (لابرادور): هاو هاو!
ريكس.العب()  # ريكس يلعب بالكرة 🎾

التحكم في الوصول

sad
صنف حساب_مصرفي
  عام  متغير صاحب_الحساب
  خاص  متغير الرصيد
  محمي متغير رقم_الحساب

  باني(صاحب، رصيد_ابتدائي)
    هذا.صاحب_الحساب = صاحب
    هذا.الرصيد       = رصيد_ابتدائي
    هذا.رقم_الحساب   = "SA" + عشوائي(10000، 99999)
  نهاية

  عام دالة إيداع(مبلغ)
    إذا (مبلغ > 0)
      هذا.الرصيد += مبلغ
      اطبع_سطر("تم الإيداع: " + مبلغ + " ريال")
    نهاية
  نهاية

  عام دالة سحب(مبلغ)
    إذا (مبلغ > هذا.الرصيد)
      ارمي جديد خطأ("رصيد غير كافٍ")
    نهاية
    هذا.الرصيد -= مبلغ
  نهاية

  عام دالة اقرأ_الرصيد()
    ارجع هذا.الرصيد
  نهاية
نهاية

السمات (Traits)

sad
سمة قابل_للطباعة
  دالة اطبع()   # مجردة — يجب تنفيذها
نهاية

سمة محسوب
  دالة احسب() ارجع 0 نهاية  # لها تنفيذ افتراضي
نهاية

صنف فاتورة نفّذ قابل_للطباعة، محسوب
  باني(البنود)
    هذا.البنود = البنود
  نهاية

  دالة اطبع()
    لكل بند في هذا.البنود
      اطبع_سطر("• " + بند.الاسم + ": " + بند.السعر)
    نهاية
    اطبع_سطر("الإجمالي: " + هذا.احسب())
  نهاية

  دالة احسب()
    متغير إجمالي = 0
    لكل بند في هذا.البنود
      إجمالي += بند.السعر
    نهاية
    ارجع إجمالي
  نهاية
نهاية

الصنف الساكن والثوابت

sad
صنف الرياضيات
  ساكن ثابت pi = 3.14159265358979

  ساكن دالة دائرة(نصف_القطر)
    ارجع الرياضيات.pi * نصف_القطر ** 2
  نهاية
نهاية

اطبع(الرياضيات.دائرة(5))  # 78.53...

التالي: إدارة الأخطاء ←

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