Tekrar - Banka Hesabı
Coddy'nin Swift Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 21 / 57.
Görev
OrtaBankAccount sınıfını tamamla. Başarısız olabilen başlatıcısı init?(owner:deposit:), boş bir sahibi veya negatif bir başlangıç bakiyesini reddeder. balance ve transactions özellikleri private(set) olarak tanımlıdır. deposit(_:) ve withdraw(_:), 1'in altındaki tutarlar için AccountError.invalidAmount hatasını verir ve withdraw, tutar bakiyeden büyük olduğunda AccountError.insufficient(balance:) hatasını verir; başarılı her değişiklik transactions içinde +50 veya -20 olarak kaydedilir. statement(), Ada: 30 (+50, -20) ya da Ada: 0 (no transactions) döndürür.
Sağlanan kod, sahibi ve başlangıç bakiyesini (name,amount), ardından d n veya w n komutlarını okur. Başlatıcı başarısız olduğunda cannot open account yazdırır; aksi takdirde başarısız komutlar için invalid amount veya insufficient funds (balance 10) yazdırır ve son olarak hesap özetini yazdırır.
Kodun AccountError.swift ve BankAccount.swift dosyalarına yazılmalıdır. main.swift, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
// Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
var input: [String] = []
while let line = readLine() { input.append(line) }
let head = input[0].split(separator: ",", omittingEmptySubsequences: false).map(String.init)
if let account = BankAccount(owner: head[0], deposit: Int(head[1])!) {
for cmd in input.dropFirst() {
let p = cmd.split(separator: " ")
let n = Int(p[1])!
do {
if p[0] == "d" { try account.deposit(n) } else { try account.withdraw(n) }
} catch AccountError.insufficient(let balance) {
print("insufficient funds (balance \(balance))")
} catch {
print("invalid amount")
}
}
print(account.statement())
} else {
print("cannot open account")
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıfları TanımlamaMetotlar ve selfBaşlatıcılarSınıflar ReferanstırTekrar - Kütüphane Kartı4Kapsülleme
Erişim DenetimiDışarıdan Salt OkunurDurumu KorumaBaşarısız Olabilen BaşlatıcılarTekrar - Banka Hesabı7Polimorfizm ve Generic'ler
PolimorfizmTür DönüşümüGeneric FonksiyonlarGeneric TürlerTekrar - Şekil Hesaplayıcı2Struct Yapıları ve Değer Türleri
Struct YapılarıDeğer SemantiğiDeğiştirici MetotlarStruct mı Class mıTekrar - Envanter Öğesi5Kalıtım
Alt sınıflarMetotları Geçersiz KılmaBaşlatıcılar ve superfinal ve HiyerarşilerTekrar - Çalışan Hiyerarşisi11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Swift playground