Tekrar - Şekil Alanları
Coddy'nin R Journey'sinin Nesne Tabanlı Programlama bölümünün bir parçası. Ders 11 / 57.
Görev
OrtaDört dosya üzerinde küçük bir şekil kitaplığı oluşturun. Yapıcılar verilmiştir.
Shape.R:area(shape, ...),perimeter(shape, ...)vedescribe(shape, ...)generic'leri. Varsayılanarea()veperimeter()yöntemleriunknown shape: hexagonile durmalıdır (call. = FALSEkullanın). Varsayılandescribe(), şeklin ilk sınıfı ve iki generic kullanılarak, iki ondalık basamakla oluşturulancircle: area 3.14, perimeter 6.28değerini döndürür.Circle.R,Rectangle.R,Triangle.R: her şeklinareaveperimeteryöntemleri. Bir üçgenina,b,ckenarları vardır; alanı,sçevrenin yarısı olmak üzeresqrt(s * (s - a) * (s - b) * (s - c))şeklindedir.
Verilen kod; circle 1, rectangle 2 3, triangle 3 4 5 veya başka herhangi bir adı içeren satırları okur, describe() ya da error: ile birlikte mesajı yazdırır ve son olarak toplam alanı yazdırır.
Kodunuz Shape.R, Circle.R, Rectangle.R ve Triangle.R dosyalarına yazılmalıdır. main.R, verilen girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
source("Shape.R")
source("Circle.R")
source("Rectangle.R")
source("Triangle.R")
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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 = "")
Nesne Tabanlı Programlama bölümündeki tüm dersler
1S3 Temelleri
Dosyalarla ÇalışmaSınıf ile ListelerYapıcı FonksiyonlarPrint ve Format MetotlarıDoğrulayıcılar ve YardımcılarTekrar - Sıcaklıklar4R'da Kapsülleme
Nesne Olarak Closure'larNesne Olarak OrtamlarErişimci FonksiyonlarDurumu KorumaÖzet - Parkmetre2S3 Generic'leri ve Metotları
Generic'ler ve UseMethodVarsayılan MetotlarTemel Generic'ler için MetotlarNextMethod TemelleriTekrar - Şekil Alanları5S4 Sınıfları
S4 Sınıflarını TanımlamaSlotlar ve ErişimGeçerlilik KontrolleriShow MetotlarıÖzet - Ürün Kataloğu8Referans Sınıfları
Referans Sınıflarını TanımlamaMetotlar ve Alan GüncellemeleriKopyalama SemantiğiKalıtım ve callSuperÖzet - Görev Kuyruğu11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Online R derleyicisi