Menu
Coddy logo textTech

בדיקה סופית של הבנק

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

challenge icon

אתגר

קל

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

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

שני הקבצים שלכם:

  • Account.lua: מחלקת Account המלאה שלכם, עם כל הפונקציונליות שבניתם לאורך הפרויקט הזה (בנאי עם מזהה, deposit, withdraw, getBalance, __tostring ו-transfer).
  • main.lua: סקריפט הדמיה שיוצר כמה חשבונות ומריץ סדרת עסקאות ביניהם.

תקבלו שש קלטים:

  1. המזהה של חשבון 1
  2. המזהה של חשבון 2
  3. המזהה של חשבון 3
  4. ההפקדה הראשונית לחשבון 1
  5. ההפקדה הראשונית לחשבון 2
  6. ההפקדה הראשונית לחשבון 3

בקובץ הראשי שלכם, דמו את יום הבנקאות הבא:

  1. צרו שלושה חשבונות עם המזהים שניתנו
  2. הפקידו את הסכומים הראשוניים בחשבונות המתאימים
  3. חשבון 1 מעביר 100 לחשבון 2
  4. חשבון 2 מעביר 150 לחשבון 3
  5. חשבון 3 מעביר 50 לחשבון 1
  6. חשבון 1 מנסה להעביר 1000 לחשבון 3 (הפעולה אמורה להיכשל)
  7. הדפיסו את שלושת החשבונות לפי הסדר (חשבון 1, אחריו 2 ואז 3)

לדוגמה, אם הקלטים הם A001, A002, A003, 500, 300 ו-200, הפלט אמור להיות:

Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300

נעבור על החישוב: חשבון 1 מתחיל עם 500, מעביר 100 לחשבון 2 (כעת יש בו 400), ואז מקבל 50 מחשבון 3 (כעת יש בו 450). חשבון 2 מתחיל עם 300, מקבל 100 (כעת יש בו 400), ומעביר 150 לחשבון 3 (כעת יש בו 250). חשבון 3 מתחיל עם 200, מקבל 150 (כעת יש בו 350), ומעביר 50 לחשבון 1 (כעת יש בו 300). ההעברה האחרונה של 1000 נכשלת כי בחשבון 1 יש רק 450.

נסו בעצמכם

-- טענו את המודול Account
local Account = require('Account')

-- קראו את ששת ערכי הקלט
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())

-- צרו שלושה חשבונות עם מזהים
-- TODO: צרו את account1, account2, account3 באמצעות Account:new()

-- הפקידו את הסכומים ההתחלתיים בכל אחד מהחשבונות המתאימים
-- TODO: הפקידו את initialDeposit1 ב-account1, את initialDeposit2 ב-account2, ואת initialDeposit3 ב-account3

-- חשבון 1 מעביר 100 לחשבון 2
-- TODO: account1:transfer(account2, 100)

-- חשבון 2 מעביר 150 לחשבון 3
-- TODO: account2:transfer(account3, 150)

-- חשבון 3 מעביר 50 לחשבון 1
-- TODO: account3:transfer(account1, 50)

-- חשבון 1 מנסה להעביר 1000 לחשבון 3 (הפעולה הזו אמורה להיכשל)
-- TODO: account1:transfer(account3, 1000)

-- הדפיסו את כל שלושת החשבונות לפי הסדר
-- TODO: הדפיסו את account1, account2, account3

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Lua אונליין