Ulasan, Penjaga Kebun Binatang
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 36 dari 57.
Tantangan
SedangBuat kebun binatang dengan class S4 yang terdiri dari lima file.
Animal.R: class virtualAnimaldengan slotnamedankg, genericfood_kg(a), serta methodshow()untukAnimalyang mencetakLeo the lion eats 9.5 kg(nama class dalam huruf kecil, jumlah makanan dengan satu angka desimal) dan baris baru.Mammal.R: class virtualMammal, yang berisiAnimal.Lion.RdanElephant.R: mamalia yang memakan 5% dan 4% dari berat badannya.Parrot.R: hewan (bukan mamalia) dengan slot tambahanword, yang makan 0.1 kg; methodshow()-nya mencetak baris hewan, laluPolly says hellodengancallNextMethod().
Kode yang disediakan membaca baris lion Leo 190, elephant Ella 4000 atau parrot Polly 1 hello, mencetak setiap hewan, total makanan, jumlah mamalia, dan apakah Animal bersifat virtual.
Kodemu ditulis di Animal.R, Mammal.R, Lion.R, Elephant.R, dan Parrot.R. main.R berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
source("Animal.R")
source("Mammal.R")
source("Lion.R")
source("Elephant.R")
source("Parrot.R")
# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
zoo <- list()
for (line in input) {
p <- strsplit(line, " ")[[1]]
kg <- as.numeric(p[3])
a <- switch(p[1],
lion = new("Lion", name = p[2], kg = kg),
elephant = new("Elephant", name = p[2], kg = kg),
parrot = new("Parrot", name = p[2], kg = kg, word = p[4]))
zoo[[length(zoo) + 1]] <- a
print(a)
}
cat(sprintf("food per day: %.1f kg", sum(vapply(zoo, food_kg, numeric(1)))), "\n", sep = "")
cat("mammals: ", sum(vapply(zoo, is, logical(1), "Mammal")), "\n", sep = "")
cat("Animal is virtual: ", isVirtualClass("Animal"), "\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 Parkir7S4 Pewarisan
Memperluas dengan containscallNextMethodClass VirtualMemeriksa Tipe dengan is()Ulasan, Penjaga Kebun Binatang2S3 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 BukuLatihan sendiri: Compiler R online