الحصول على الرصيد
جزء من قسم البرمجة كائنية التوجه في رحلة Lua على Coddy. الدرس 22 من 70.
التحدي
سهلإن بنكك الرقمي يتخذ شكلاً متكاملاً بالفعل! يمكن للحسابات تلقي الإيداعات والتعامل مع عمليات السحب مع التحقق السليم من الأموال. والآن لنضف طريقة getter لاسترداد الرصيد، ثم نجمع كل شيء معًا في سيناريو مصرفي واقعي.
ستواصل البناء على ملفاتك الحالية:
Account.lua: أضف طريقة:getBalance()تُرجع الرصيد الحالي. يتبع هذا نمط getter الذي تعلمته سابقًا: توفير وصول مضبوط إلى البيانات الداخلية بدلاً من الوصول إلى الحقل مباشرةً. احتفظ بكل وظائفك الحالية (constructor وdeposit وwithdraw methods).main.lua: أنشئ حسابًا ونفّذ سلسلة من العمليات المصرفية لتوضيح كيفية عمل الإيداعات وعمليات السحب وفحوصات الرصيد معًا في سيناريو واقعي.
ستتلقى خمس قيم إدخال:
- مبلغ الإيداع الأولي
- مبلغ السحب الأول
- مبلغ الإيداع الثاني
- مبلغ السحب الثاني
- مبلغ السحب الثالث
في ملفك الرئيسي، أنشئ حسابًا ونفّذ هذه العمليات بالترتيب:
- أودِع المبلغ الأولي، ثم اطبع الرصيد باستخدام
:getBalance() - اسحب المبلغ الأول، ثم اطبع الرصيد
- أودِع المبلغ الثاني، ثم اطبع الرصيد
- اسحب المبلغ الثاني، ثم اطبع الرصيد
- حاول تنفيذ عملية السحب الثالثة، ثم اطبع الرصيد
تذكّر أن عمليات السحب الفاشلة ستطبع Insufficient funds قبل أن تطبع الرصيد.
على سبيل المثال، إذا كانت قيم الإدخال هي 200 و50 و100 و180 و100، فينبغي أن يكون الناتج:
200
150
250
70
Insufficient funds
70يبدأ الحساب عند 200، وينخفض إلى 150 بعد عملية السحب الأولى، ويرتفع إلى 250 بعد إيداع آخر، وينخفض إلى 70 بعد سحب 180، ويبقى عند 70 عندما تفشل عملية السحب النهائية البالغة 100 بسبب عدم كفاية الأموال.
جرّب بنفسك
-- استيراد وحدة Account
local Account = require('Account')
-- اقرأ المدخلات الخمسة
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- أنشئ حسابًا واحدًا
local account = Account:new()
-- أودع المبلغ الأولي واطبع الرصيد باستخدام :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())
-- حاول السحب الأول واطبع الرصيد
account:withdraw(withdrawal1)
print(account:getBalance())
-- أودع المبلغ الثاني واطبع الرصيد
account:deposit(deposit2)
print(account:getBalance())
-- حاول السحب الثاني واطبع الرصيد
account:withdraw(withdrawal2)
print(account:getBalance())
-- حاول السحب الثالث واطبع الرصيد
account:withdraw(withdrawal3)
print(account:getBalance())
جميع دروس البرمجة كائنية التوجه
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 عبر الإنترنت