Ulasan: Penggajian Staf
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 16 dari 57.
Tantangan
SedangBuat 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()mengembalikanAda: 5000.00denganpay()yang diformat menjadi dua angka desimal; danmanager_cost(staff), total gaji bulanan semua orang yang mewarisimanager.Manager.R:new_manager(name, salary, bonus)dengan field tambahanbonus;pay.manager()menambahkan seperdua belas bonus ke gaji karyawan denganNextMethod();format.manager()menambahkan(manager)setelah teks karyawan denganNextMethod().Intern.R:new_intern(name, salary);pay.intern()adalah setengah dari gaji karyawan, menggunakanNextMethod(). 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
1Dasar S3
Bekerja dengan fileList dengan classFungsi KonstruktorMethod print dan formatValidator dan helperUlasan: Suhu4Enkapsulasi di R
Closure sebagai objectEnvironment sebagai objectFungsi accessorMelindungi stateRangkuman: Meter Parkir2S3 Generics dan Method
Generics dan UseMethodMethod DefaultMethod untuk Base GenericsDasar-Dasar NextMethodRekap: Luas Bangun5S4 class
Mendefinisikan class S4Slots dan AksesPemeriksaan ValiditasMethod showRingkasan: Katalog Produk8Kelas Referensi
Mendefinisikan Kelas ReferensiPembaruan method dan fieldSemantik PenyalinanPewarisan dan callSuperRangkuman: Antrean Tugas11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam Buku3Pewarisan S3
Vektor classUrutan Pencarian methodMemperluas dengan NextMethodMemeriksa dengan inherits()Ulasan: Penggajian StafLatihan sendiri: Compiler R online