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

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

جزء من قسم Object Oriented Programming في رحلة Lua على Coddy — الدرس 22 من 70.

challenge icon

التحدي

سهل

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

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

  • Account.lua: أضف طريقة :getBalance() التي تعيد الرصيد الحالي. يتبع هذا نمط الجلب (getter pattern) الذي تعلمته سابقاً—مما يوفر وصولاً متحكماً فيه للبيانات الداخلية بدلاً من الوصول إلى الحقل مباشرة. احتفظ بجميع وظائفك الحالية (المنشئ، وطرق الإيداع والسحب).
  • 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())

جميع دروس Object Oriented Programming