סיכום – חשבון בנק
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Kotlin של Coddy. שיעור 11 מתוך 57.
אתגר
בינוניהשלימו את המחלקה BankAccount(val owner: String, opening: Int). בלוק init דורש בעלים שאינו ריק או לבן (owner is empty) והפקדה ראשונית שאינה שלילית (opening must not be negative). ל־balance יש setter פרטי. העסקאות נשמרות בתוך MutableList פרטית ונחשפות כ־val transactions: List<String>. הפונקציות deposit(amount) ו־withdraw(amount) מחזירות true במקרה של הצלחה: סכומים קטנים מ־1 נדחים, ומשיכה הגדולה מהיתרה נדחית; שינויים מוצלחים נרשמים בתור +50 או -20. הפונקציה statement() מחזירה Ada: 30 (+50, -20) או Ada: 0 (no transactions).
הקוד שסופק קורא את שם הבעלים ואת ההפקדה הראשונית (name,amount), ואז פקודות d n או w n. הוא מדפיס refused עבור פקודות שנכשלו, ולבסוף את פירוט החשבון; חשבון לא תקין מדפיס את הודעת השגיאה.
הקוד שלך נכנס ל־BankAccount.kt. הקובץ Main.kt מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
fun main() {
// קוד קלט/פלט שסופק: יש להשאיר אותו כפי שהוא
val input = generateSequence(::readLine).toList()
try {
val (name, amount) = input[0].split(",")
val account = BankAccount(name, amount.toInt())
for (cmd in input.drop(1)) {
val (op, n) = cmd.split(" ")
val ok = if (op == "d") account.deposit(n.toInt()) else account.withdraw(n.toInt())
if (!ok) println("refused")
}
println(account.statement())
} catch (e: IllegalArgumentException) {
println(e.message)
}
}
כל השיעורים ביחידה תכנות מונחה עצמים
1מחלקות ואובייקטים
עבודה עם קבציםהגדרת מחלקותבנאים ראשייםבלוקי init ואימות נתוניםבנאים משנייםסיכום – כרטיס ספרייהתרגלו בעצמכם: Kotlin אונליין