مراجعة - درجة الطالب
جزء من قسم البرمجة كائنية التوجه في رحلة Lua على Coddy. الدرس 18 من 70.
التحدي
سهللنبنِ فئة Student كاملة تجمع كل ما تعلمته في هذا الفصل: متغيرات النسخة، وواجهات getter، وواجهات setter، والخصائص المحسوبة، وكلها تعمل معًا!
ستنظم الشيفرة عبر ملفين:
Student.lua: عرّف فئةStudentباستخدام نمط prototype القياسي. يجب أن يخزّن كل طالبnameوgrade. تحتاج فئتك إلى:- منشئ
:new(name, grade) - واجهة getter
:getName()تُرجع اسم الطالب - واجهة getter
:getGrade()تُرجع grade الحالية - واجهة setter
:setGrade(newGrade)تُحدّث grade - دالة
:hasPassed(threshold)تُرجعtrueإذا كانت grade الطالب أكبر من threshold أو مساوية له، وfalseخلاف ذلك
- منشئ
main.lua: استخدم Require لوحدة Student الخاصة بك وأظهر جميع الوظائف من خلال إنشاء طالب، والتحقق من حالته، وتحديث grade الخاصة به، والتحقق من التغييرات.
ستتلقى أربعة مدخلات:
- اسم الطالب
- grade الأولية
- threshold النجاح المطلوب التحقق منه
- grade الجديدة المطلوب تعيينها
في ملفك الرئيسي، أنشئ طالبًا بالاسم وgrade الأولية المعطيين، ثم اطبع ما يلي في أسطر منفصلة:
- اسم الطالب
- grade الطالب الأولية
- ما إذا كان الطالب قد اجتاز باستخدام threshold المعطى (اطبع
trueأوfalse) - grade الطالب بعد تحديثها باستخدام grade الجديدة
- ما إذا كان الطالب قد اجتاز باستخدام threshold نفسه بعد تحديث grade
على سبيل المثال، إذا كانت المدخلات هي Emma و55 و60 و75، فيجب أن يكون الناتج:
Emma
55
false
75
trueكانت grade Emma في البداية 55، وهو ما لم يحقق threshold النجاح البالغ 60. بعد تحديث grade الخاصة بها إلى 75، أصبحت الآن ناجحة!
REQUIRED OUTPUT FORMAT:جرّب بنفسك
-- تتطلب وحدة Student
local Student = require('Student')
-- اقرأ المدخلات
local name = io.read()
local initialGrade = tonumber(io.read())
local threshold = tonumber(io.read())
local newGrade = tonumber(io.read())
-- TODO: أنشئ طالباً بالاسم والدرجة الأولية المعطاة
-- TODO: اطبع اسم الطالب باستخدام الـ getter
-- TODO: اطبع الدرجة الأولية للطالب باستخدام الـ getter
-- TODO: تحقق واطبع ما إذا كان الطالب قد نجح بالعتبة المعطاة
-- TODO: حدّث درجة الطالب باستخدام الـ setter
-- TODO: اطبع درجة الطالب الجديدة
-- TODO: تحقق واطبع ما إذا كان الطالب قد نجح بعد تحديث الدرجة
جميع دروس البرمجة كائنية التوجه
4مشروع: بنك رقمي
إعداد المشروعطريقة الإيداع7تعدد الأشكال وإعادة التعريف
إعادة تعريف الدوالاستدعاء دوال الفئة الأبDuck Typingواجهة مشتركةالتحقق من النوعمراجعة - أدوار الموظفين2نمط النموذج الأولي للفئات
مفهوم النموذج الأوليالربط باستخدام __indexالمنشئ :new()تهيئة الخصائصنسخ مستقلةملخص - مصنع السيارات5تحميل المعاملات في OOP
جمع الكائناتطرح الكائناتدمج الكائناتمقارنة الكائنات (<, >)مراجعة - رياضيات المحفظة8التغليف
اصطلاحات التسميةاستخدام Closures للخصوصيةالوصول عبر Closuresجداول للقراءة فقطمنطق التحقق من الصحةمراجعة - الخزنة الآمنة11أنماط التصميم (مبسط)
دوال المصنعجدول Singletonنمط الـ Iteratorالمراقب (المستمع)مراجعة - مصنع الـ Logger3حالة الكائن وسلوكه
متغيرات النسخةدالات الجلب (Getter Methods)دالات التعيين (Setter Methods)الخصائص المحسوبةتنسيق النصوصالتحقق من المساواةمراجعة - درجة الطالب6أساسيات الوراثة
إعداد الوراثةوراثة الـ Methodsتوسيع الـ Constructorإضافة Methods للابنالمشترك مقابل الفريدملخص - التسلسل الهرمي للأشكالتدرّب بنفسك: مترجم Lua عبر الإنترنت