סיכום – שכר העובדים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-R של Coddy. שיעור 16 מתוך 57.
אתגר
בינוניבנו מערכת שכר בשלושה קבצים. הפונקציה הגנרית pay() נתונה בקובץ Employee.R.
Employee.R:new_employee(name, salary, ..., class = character());pay.employee()היא המשכורת חלקי 12;format.employee()מחזירהAda: 5000.00כאשרpay()מעוצבת עם שתי ספרות אחרי הנקודה העשרונית; ו-manager_cost(staff), סך התשלום החודשי לכל מי שיורש מ-manager.Manager.R:new_manager(name, salary, bonus)עם השדה הנוסףbonus;pay.manager()מוסיפה לתשלום העובד שתים-עשרה מהבונוס באמצעותNextMethod();format.manager()מוסיפה(manager)אחרי הטקסט של העובד באמצעותNextMethod().Intern.R:new_intern(name, salary);pay.intern()היא מחצית מתשלום העובד, באמצעותNextMethod(). המתמחים שומרים על פורמט העובד.
הקוד שסופק קורא שורות employee Bo 36000, manager Ada 60000 12000 או intern Cy 24000, מדפיס את הפורמט של כל אדם, ואז את הסכום הכולל של המנהלים.
הקוד שלכם ייכתב בקבצים Employee.R, Manager.R ו-Intern.R. הקובץ main.R מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
source("Employee.R")
source("Manager.R")
source("Intern.R")
# קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
staff <- list()
for (line in input) {
p <- strsplit(line, " ")[[1]]
staff[[length(staff) + 1]] <- switch(p[1],
employee = new_employee(p[2], as.numeric(p[3])),
manager = new_manager(p[2], as.numeric(p[3]), as.numeric(p[4])),
intern = new_intern(p[2], as.numeric(p[3])))
}
for (x in staff) cat(format(x), "\n", sep = "")
cat(sprintf("managers cost %.2f per month", manager_cost(staff)), "\n", sep = "")
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות S3
עבודה עם קבציםרשימות עם מחלקהפונקציות בנאימתודות print ו-formatמאמתים ופונקציות עזרחזרה – טמפרטורות3ירושה ב-S3
וקטורי מחלקהסדר חיפוש המתודותהרחבה באמצעות NextMethodבדיקה באמצעות inherits()סיכום – שכר העובדיםתרגלו בעצמכם: קומפיילר R אונליין