الفصل 11: البرمجة الكائنية المتقدمة
ما ستتعلم في هذا الفصل
- الوراثة المتعددة المستويات
- تحميل العوامل الزائد
- الأعضاء الساكنة (
ساكن) - الأصناف المجردة (
مجرد) - الخصائص (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
نهاية
ساكن دالة كم_كائن()
ارجع عداد.العدد
نهاية
نهاية
جديد عداد()
جديد عداد()
جديد عداد()
اطبع_سطر("عدد الكائنات: " + عداد.كم_كائن()) # 311.4 الخصائص (Getter/Setter)
sad
صنف شخص
خاص متغير _عمر = 0
باني(عمر)
هذا._عمر = عمر
نهاية
خاصية العمر
احصل()
ارجع هذا._عمر
نهاية
عيّن(قيمة)
إذا (قيمة >= 0 و قيمة <= 150)
هذا._عمر = قيمة
نهاية
نهاية
نهاية
نهاية
متغير ش = جديد شخص(25)
اطبع_سطر(ش.العمر) # 25
ش.العمر = 30
اطبع_سطر(ش.العمر) # 30تمارين
تمرين 1: نظام أشكال هندسية
أنشئ تسلسل وراثة لأشكال (شكل ← مستطيل ← مربع) مع حساب المساحة والمحيط.
💡 الحل
sad
صنف شكل
دالة المساحة()
ارجع 0
نهاية
دالة المحيط()
ارجع 0
نهاية
نهاية
صنف مستطيل يرث شكل
متغير عرض
متغير ارتفاع
باني(عرض، ارتفاع)
هذا.عرض = عرض
هذا.ارتفاع = ارتفاع
نهاية
دالة المساحة()
ارجع هذا.عرض * هذا.ارتفاع
نهاية
دالة المحيط()
ارجع 2 * (هذا.عرض + هذا.ارتفاع)
نهاية
نهاية
صنف مربع يرث مستطيل
باني(ضلع)
الأساس(ضلع، ضلع)
نهاية
نهاية
متغير م = جديد مربع(5)
اطبع_سطر("مساحة المربع: " + م.المساحة()) # 25
اطبع_سطر("محيط المربع: " + م.المحيط()) # 20