Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الحصول على الرصيد

جزء من قسم البرمجة كائنية التوجه في رحلة Lua على Coddy. الدرس 22 من 70.

challenge icon

التحدي

سهل

إن بنكك الرقمي يتخذ شكلاً متكاملاً بالفعل! يمكن للحسابات تلقي الإيداعات والتعامل مع عمليات السحب مع التحقق السليم من الأموال. والآن لنضف طريقة getter لاسترداد الرصيد، ثم نجمع كل شيء معًا في سيناريو مصرفي واقعي.

ستواصل البناء على ملفاتك الحالية:

  • Account.lua: أضف طريقة :getBalance() تُرجع الرصيد الحالي. يتبع هذا نمط getter الذي تعلمته سابقًا: توفير وصول مضبوط إلى البيانات الداخلية بدلاً من الوصول إلى الحقل مباشرةً. احتفظ بكل وظائفك الحالية (constructor وdeposit وwithdraw methods).
  • main.lua: أنشئ حسابًا ونفّذ سلسلة من العمليات المصرفية لتوضيح كيفية عمل الإيداعات وعمليات السحب وفحوصات الرصيد معًا في سيناريو واقعي.

ستتلقى خمس قيم إدخال:

  1. مبلغ الإيداع الأولي
  2. مبلغ السحب الأول
  3. مبلغ الإيداع الثاني
  4. مبلغ السحب الثاني
  5. مبلغ السحب الثالث

في ملفك الرئيسي، أنشئ حسابًا ونفّذ هذه العمليات بالترتيب:

  1. أودِع المبلغ الأولي، ثم اطبع الرصيد باستخدام :getBalance()
  2. اسحب المبلغ الأول، ثم اطبع الرصيد
  3. أودِع المبلغ الثاني، ثم اطبع الرصيد
  4. اسحب المبلغ الثاني، ثم اطبع الرصيد
  5. حاول تنفيذ عملية السحب الثالثة، ثم اطبع الرصيد

تذكّر أن عمليات السحب الفاشلة ستطبع 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())

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Lua عبر الإنترنت