פעולת משיכה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 21 מתוך 70.
אתגר
קלהבנק הדיגיטלי שלך צומח! חשבונות יכולים כעת לקבל הפקדות, אבל בנק אמיתי צריך גם לאפשר ללקוחות למשוך כסף. נוסיף מתודת :withdraw(amount), אבל עם בדיקת בטיחות חשובה.
בניגוד להפקדות, משיכות עלולות להיכשל. אם לקוח מנסה למשוך יותר כסף ממה שיש לו, הבנק לא אמור לאפשר זאת. מתודת המשיכה שלך צריכה לבדוק אם יש מספיק כסף בחשבון לפני ניכוי הסכום.
תמשיך לעבוד עם שני הקבצים שלך:
Account.lua: הוסף מתודת:withdraw(amount)למחלקת Account הקיימת שלך. אם יש בחשבון יתרה מספקת, הפחת את הסכום והחזרtrue. אם אין מספיק כסף, הדפסInsufficient fundsוהחזרfalseבלי לשנות את היתרה.main.lua: צור חשבון, בצע הפקדה כדי להוסיף לו כסף, ואז נסה לבצע כמה משיכות כדי לראות עסקאות מוצלחות וכושלות.
תקבל ארבעה קלטים:
- סכום ההפקדה הראשונית
- סכום המשיכה הראשונה
- סכום המשיכה השנייה
- סכום המשיכה השלישית
בקובץ הראשי שלך, צור חשבון, הפקד את הסכום הראשוני, ואז נסה לבצע כל משיכה לפי הסדר. אחרי כל ניסיון משיכה, הדפס את היתרה הנוכחית בשורה חדשה. זכור שגם משיכות שנכשלו ידפיסו Insufficient funds לפני שתדפיס את היתרה.
לדוגמה, אם הקלטים הם 100, 30, 50 ו-40, הפלט אמור להיות:
70
20
Insufficient funds
20בחשבון יש 100 אחרי ההפקדה. המשיכה הראשונה, בסך 30, מצליחה (יתרה: 70), המשיכה השנייה, בסך 50, מצליחה (יתרה: 20), אבל המשיכה השלישית, בסך 40, נכשלת כי נותרו רק 20, ולכן היתרה נשארת 20.
נסו בעצמכם
-- טען את המודול Account באמצעות require
local Account = require('Account')
-- קרא את ארבעת הקלטים
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- צור חשבון אחד
local account = Account:new()
-- הפקד את הסכום ההתחלתי
account:deposit(initialDeposit)
-- נסה לבצע את המשיכה הראשונה והדפס את היתרה
-- TODO: קרא כאן ל־account:withdraw(withdrawal1)
print(account.balance)
-- נסה לבצע את המשיכה השנייה והדפס את היתרה
-- TODO: קרא כאן ל־account:withdraw(withdrawal2)
print(account.balance)
-- נסה לבצע את המשיכה השלישית והדפס את היתרה
-- TODO: קרא כאן ל־account:withdraw(withdrawal3)
print(account.balance)
כל השיעורים ביחידה תכנות מונחה עצמים
4פרויקט: בנק דיגיטלי
הגדרת הפרויקטפעולת הפקדה7פולימורפיזם ודריסת מתודות
דריסת מתודותקריאה למתודות של מחלקת האבטיפוסיות ברווזממשק משותףבדיקת טיפוססיכום – תפקידי עובדים2תבנית אב־טיפוס למחלקה
מושג אב־הטיפוסקישור באמצעות __indexהבנאי :new()אתחול מאפייניםמופעים עצמאייםסיכום – מפעל מכוניות5העמסת אופרטורים בתכנות מונחה עצמים
חיבור אובייקטיםחיסור אובייקטיםשרשור אובייקטיםהשוואת אובייקטים (<, >)חזרה – חישובים עם ארנק8כימוס
כללי מתן שמותClosures לשמירה על פרטיותגישה באמצעות Closuresטבלאות לקריאה בלבדלוגיקת אימותסיכום – כספת מאובטחת11תבניות עיצוב (בקצרה)
פונקציות Factoryטבלת Singletonתבנית IteratorObserver (מאזין)סיכום – מפעל Logger3מצב והתנהגות של אובייקטים
משתני מופעמתודות Getterמתודות Setterמאפיינים מחושביםעיצוב מחרוזותבדיקות שוויוןסיכום – ציון תלמיד6יסודות הירושה
הכנת מבנה הירושהירושת מתודותהרחבת הבנאיהוספת מתודות למחלקת הבתמשותף לעומת ייחודיסיכום – היררכיית צורותתרגלו בעצמכם: קומפיילר Lua אונליין