Tekrar - Hayvanat Bahçesi Bakıcısı
Coddy'nin R Journey'sinin Nesne Tabanlı Programlama bölümünün bir parçası. Ders 36 / 57.
Görev
OrtaBeş dosya üzerinde S4 sınıflarından oluşan bir hayvanat bahçesi oluşturun.
Animal.R:namevekgyuvalarına sahip sanalAnimalsınıfı,food_kg(a)jeneriği veAnimaliçinLeo the lion eats 9.5 kgçıktısını (sınıf adı küçük harfle, besin miktarı bir ondalık basamakla) ve yeni bir satırı yazdıran birshow()yöntemi.Mammal.R:Animaliçeren sanalMammalsınıfı.Lion.RveElephant.R: ağırlıklarının sırasıyla %5'ini ve %4'ünü tüketen memeliler.Parrot.R:wordadlı ek yuvaya sahip bir hayvan (memeli değil); 0.1 kg tüketir veshow()yöntemi hayvan satırını, ardındancallNextMethod()ilePolly says helloçıktısını yazdırır.
Sağlanan kod lion Leo 190, elephant Ella 4000 veya parrot Polly 1 hello satırlarını okur; her hayvanı, toplam besin miktarını, memelilerin sayısını ve Animal sınıfının sanal olup olmadığını yazdırır.
Kodunuz Animal.R, Mammal.R, Lion.R, Elephant.R ve Parrot.R dosyalarına gider. main.R sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
source("Animal.R")
source("Mammal.R")
source("Lion.R")
source("Elephant.R")
source("Parrot.R")
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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 = "")
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 - Parkmetre7S4 Kalıtım
contains ile GenişletmecallNextMethodSanal Sınıflaris() ile Türleri Kontrol EtmeTekrar - Hayvanat Bahçesi Bakıcısı2S3 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