Rekap: Luas Bangun
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 11 dari 57.
Tantangan
SedangBuat library kecil untuk bentuk geometri dalam empat file. Konstruktor sudah disediakan.
Shape.R: fungsi generikarea(shape, ...),perimeter(shape, ...), dandescribe(shape, ...). method defaultarea()danperimeter()berhenti denganunknown shape: hexagon(gunakancall. = FALSE).describe()default mengembalikancircle: area 3.14, perimeter 6.28, yang dibuat dari class pertama bentuk dan kedua fungsi generik, dengan dua angka desimal.Circle.R,Rectangle.R,Triangle.R: methodareadanperimeteruntuk setiap bentuk. Segitiga memiliki sisia,b,c; luasnya adalahsqrt(s * (s - a) * (s - b) * (s - c)), denganssetengah dari keliling.
Kode yang disediakan membaca baris circle 1, rectangle 2 3, triangle 3 4 5 atau nama lainnya, mencetak describe() atau error: beserta pesannya, lalu mencetak total luas.
Tulis kodemu di Shape.R, Circle.R, Rectangle.R, dan Triangle.R. main.R berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
source("Shape.R")
source("Circle.R")
source("Rectangle.R")
source("Triangle.R")
# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
total <- 0
for (line in input) {
p <- strsplit(line, " ")[[1]]
n <- as.numeric(p[-1])
s <- switch(p[1],
circle = new_circle(n[1]),
rectangle = new_rectangle(n[1], n[2]),
triangle = new_triangle(n[1], n[2], n[3]),
structure(list(), class = p[1]))
out <- tryCatch({
total <- total + area(s)
describe(s)
}, error = function(e) paste("error:", conditionMessage(e)))
cat(out, "\n", sep = "")
}
cat(sprintf("total area: %.2f", total), "\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 BukuLatihan sendiri: Compiler R online