Menu
Coddy logo textTech

קבלת יתרה

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 22 מתוך 70.

challenge icon

אתגר

קל

הבנק הדיגיטלי שלך באמת מתחיל לקרום עור וגידים! אפשר להפקיד כספים בחשבונות ולבצע מהם משיכות, תוך בדיקת יתרה מתאימה. עכשיו נוסיף מתודת getter לאחזור היתרה, ואז נחבר הכול יחד בתרחיש בנקאי מציאותי.

תמשיך לבנות על הקבצים הקיימים שלך:

  • Account.lua: הוסף מתודת :getBalance() שמחזירה את היתרה הנוכחית. כך פועלת תבנית ה-getter שלמדת קודם: מתן גישה מבוקרת לנתונים פנימיים במקום גישה ישירה לשדה. שמור על כל הפונקציונליות הקיימת (בנאי ומתודות ההפקדה והמשיכה).
  • 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 באמצעות require
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 אונליין