קבלת יתרה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 22 מתוך 70.
אתגר
קלהבנק הדיגיטלי שלך באמת מתחיל לקרום עור וגידים! אפשר להפקיד כספים בחשבונות ולבצע מהם משיכות, תוך בדיקת יתרה מתאימה. עכשיו נוסיף מתודת getter לאחזור היתרה, ואז נחבר הכול יחד בתרחיש בנקאי מציאותי.
תמשיך לבנות על הקבצים הקיימים שלך:
Account.lua: הוסף מתודת:getBalance()שמחזירה את היתרה הנוכחית. כך פועלת תבנית ה-getter שלמדת קודם: מתן גישה מבוקרת לנתונים פנימיים במקום גישה ישירה לשדה. שמור על כל הפונקציונליות הקיימת (בנאי ומתודות ההפקדה והמשיכה).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 באמצעות 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())
כל השיעורים ביחידה תכנות מונחה עצמים
4פרויקט: בנק דיגיטלי
הגדרת הפרויקטפעולת הפקדה7פולימורפיזם ודריסת מתודות
דריסת מתודותקריאה למתודות של מחלקת האבטיפוסיות ברווזממשק משותףבדיקת טיפוססיכום – תפקידי עובדים2תבנית אב־טיפוס למחלקה
מושג אב־הטיפוסקישור באמצעות __indexהבנאי :new()אתחול מאפייניםמופעים עצמאייםסיכום – מפעל מכוניות5העמסת אופרטורים בתכנות מונחה עצמים
חיבור אובייקטיםחיסור אובייקטיםשרשור אובייקטיםהשוואת אובייקטים (<, >)חזרה – חישובים עם ארנק8כימוס
כללי מתן שמותClosures לשמירה על פרטיותגישה באמצעות Closuresטבלאות לקריאה בלבדלוגיקת אימותסיכום – כספת מאובטחת11תבניות עיצוב (בקצרה)
פונקציות Factoryטבלת Singletonתבנית IteratorObserver (מאזין)סיכום – מפעל Logger3מצב והתנהגות של אובייקטים
משתני מופעמתודות Getterמתודות Setterמאפיינים מחושביםעיצוב מחרוזותבדיקות שוויוןסיכום – ציון תלמיד6יסודות הירושה
הכנת מבנה הירושהירושת מתודותהרחבת הבנאיהוספת מתודות למחלקת הבתמשותף לעומת ייחודיסיכום – היררכיית צורותתרגלו בעצמכם: קומפיילר Lua אונליין