Menu
CoddyTech

Ulasan: Penggajian Staf

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 16 dari 57.

challenge icon

Tantangan

Sedang

Buat sistem penggajian dalam tiga file. Fungsi generik pay() sudah disediakan di Employee.R.

  • Employee.R: new_employee(name, salary, ..., class = character()); pay.employee() adalah gaji dibagi 12; format.employee() mengembalikan Ada: 5000.00 dengan pay() yang diformat menjadi dua angka desimal; dan manager_cost(staff), total gaji bulanan semua orang yang mewarisi manager.
  • Manager.R: new_manager(name, salary, bonus) dengan field tambahan bonus; pay.manager() menambahkan seperdua belas bonus ke gaji karyawan dengan NextMethod(); format.manager() menambahkan (manager) setelah teks karyawan dengan NextMethod().
  • Intern.R: new_intern(name, salary); pay.intern() adalah setengah dari gaji karyawan, menggunakan NextMethod(). Intern tetap menggunakan format karyawan.

Kode yang disediakan membaca baris employee Bo 36000, manager Ada 60000 12000 atau intern Cy 24000, mencetak format setiap orang, lalu total gaji para manajer.

Tuliskan kodemu di Employee.R, Manager.R, dan Intern.R. main.R berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

source("Employee.R")
source("Manager.R")
source("Intern.R")

# Kode input/output yang disediakan: biarkan apa adanya
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 = "")

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler R online