Banka Defteri
Coddy'nin R Journey'sinin Nesne Tabanlı Programlama bölümünün bir parçası. Ders 57 / 57.
Görev
ZorDört dosyada Reference Classes kullanarak küçük bir banka oluşturun. Tüm tanımlar suppressMessages() içine alınmıştır; her stop() içinde call. = FALSE kullanın.
Account.R:id,owner,balancealanları (başlangıçta 0).deposit(x)vewithdraw(x),xeksikse veya 1'in altındaysainvalid amountile durur; bakiyelowest()değerinin (0) altına düşeceksewithdraw(),insufficient funds in 2ile durur.month_end()hiçbir şey yapmaz;line(),kind()kullanarak1 ada checking: -20değerini döndürür.Checking.R: türchecking; bakiye -100'e kadar düşebilir.Savings.R: türsavings; ayda en fazla 2 para çekme işlemi (withdrawal limit on 2), yalnızca başarılı olduklarında sayılır;month_end()%1 faizi aşağı yuvarlayarak ekler ve sayacı sıfırlar.Bank.R:open_account(kind, id, owner)(account 2 exists),get_account(id)(no account 9), para çekme başarısız olduğunda hiçbir şeyi değiştirmeyentransfer(from, to, amount), her hesap içinmonth_end()ve kimliğe göre sıralanmış tüm hesapların satırlarını döndürenstatement().
Sağlanan kod open checking 1 ada, dep 1 100, wd 2 30, tr 1 2 50 veya month komutlarını okur, her biri için ok ya da hata mesajını yazdırır, ardından hesap özetini yazdırır.
Kodunuz Account.R, Checking.R, Savings.R ve Bank.R dosyalarına yerleştirilmelidir. main.R, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
source("Account.R")
source("Checking.R")
source("Savings.R")
source("Bank.R")
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
bank <- Bank$new()
for (line in input) {
p <- strsplit(line, " ")[[1]]
n <- suppressWarnings(as.numeric(p[-1]))
msg <- tryCatch({
switch(p[1],
open = bank$open_account(p[2], as.numeric(p[3]), p[4]),
dep = bank$get_account(n[1])$deposit(n[2]),
wd = bank$get_account(n[1])$withdraw(n[2]),
tr = bank$transfer(n[1], n[2], n[3]),
month = bank$month_end())
"ok"
}, error = function(e) conditionMessage(e))
cat(line, ": ", msg, "\n", sep = "")
}
for (l in bank$statement()) cat(l, "\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