مراجعة - درجة الطالب
جزء من قسم البرمجة كائنية التوجه في رحلة 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، أصبحت الآن ناجحة!
جرّب بنفسك
-- تتطلب وحدة 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 عبر الإنترنت