ספר חשבונות בנק
חלק מהיחידה תכנות מונחה עצמים במסלול ה-R של Coddy. שיעור 57 מתוך 57.
אתגר
קשהבנו בנק קטן באמצעות מחלקות Reference בארבעה קבצים. עטפו את כל ההגדרות ב-suppressMessages(); השתמשו ב-call. = FALSE בכל קריאה ל-stop().
Account.R: השדותid,owner,balance(0 בתחילת הדרך). הקריאותdeposit(x)ו-withdraw(x)יעצרו עםinvalid amountכאשרxחסר או קטן מ-1;withdraw()תיעצר עםinsufficient funds in 2אם היתרה תרד מתחת ל-lowest(), שערכו 0.month_end()לא עושה דבר;line()מחזירה1 ada checking: -20באמצעותkind().Checking.R: הסוג הואchecking; היתרה יכולה לרדת עד -100.Savings.R: הסוג הואsavings; אפשר לבצע לכל היותר 2 משיכות בחודש (withdrawal limit on 2), והן נספרות רק כשהן מצליחות;month_end()מוסיפה ריבית בשיעור 1%, מעוגלת כלפי מטה, ומאפסת את המונה.Bank.R:open_account(kind, id, owner)(account 2 exists),get_account(id)(no account 9),transfer(from, to, amount), שאינה משנה דבר אם המשיכה נכשלת,month_end()עבור כל חשבון, ו-statement(), שמחזירה את שורות כל החשבונות, ממוינות לפי מזהה.
הקוד שסופק קורא פקודות כמו open checking 1 ada, dep 1 100, wd 2 30, tr 1 2 50 או month, מדפיס ok או את הודעת השגיאה עבור כל אחת מהן, ולאחר מכן את הדוח.
הקוד שלכם צריך להופיע בקבצים Account.R, Checking.R, Savings.R ו-Bank.R. הקובץ main.R מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
source("Account.R")
source("Checking.R")
source("Savings.R")
source("Bank.R")
# קוד קלט/פלט שסופק: יש להשאיר אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
bank <- Bank$new()
for (line in input) {
p <- strsplit(line, " ")[[1]]
n <- suppressWarnings(as.numeric(p[-1]))
msg <- tryCatch({
switch(p[1],
open = bank$open_account(p[2], as.numeric(p[3]), p[4]),
dep = bank$get_account(n[1])$deposit(n[2]),
wd = bank$get_account(n[1])$withdraw(n[2]),
tr = bank$transfer(n[1], n[2], n[3]),
month = bank$month_end())
"ok"
}, error = function(e) conditionMessage(e))
cat(line, ": ", msg, "\n", sep = "")
}
for (l in bank$statement()) cat(l, "\n", sep = "")
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות S3
עבודה עם קבציםרשימות עם מחלקהפונקציות בנאימתודות print ו-formatמאמתים ופונקציות עזרחזרה – טמפרטורותתרגלו בעצמכם: קומפיילר R אונליין