Rangkuman: Rekening Bank
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 21 dari 57.
Tantangan
SedangLengkapi class BankAccount. Initializer failable-nya init?(owner:deposit:) menolak owner yang kosong atau deposit awal yang negatif. balance dan transactions menggunakan private(set). deposit(_:) dan withdraw(_:) melempar AccountError.invalidAmount untuk jumlah di bawah 1, dan withdraw melempar AccountError.insufficient(balance:) ketika jumlahnya lebih besar daripada saldo; setiap perubahan yang berhasil dicatat di transactions sebagai +50 atau -20. statement() mengembalikan Ada: 30 (+50, -20), atau Ada: 0 (no transactions).
Kode yang disediakan membaca owner dan deposit awal (name,amount), lalu perintah d n atau w n. Kode mencetak cannot open account jika initializer gagal; jika tidak, kode mencetak invalid amount atau insufficient funds (balance 10) untuk perintah yang gagal, lalu mencetak statement.
Tuliskan kodemu di AccountError.swift dan BankAccount.swift. main.swift berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
// Kode input/output yang disediakan: biarkan apa adanya
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")
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Class dan Object
Bekerja dengan FileMendefinisikan ClassMethod dan selfInitializerClass adalah ReferensiUlasan: Kartu Perpustakaan4Enkapsulasi
Kontrol AksesHanya Bisa Dibaca dari LuarMelindungi StateInitializer yang Bisa GagalRangkuman: Rekening Bank7Polimorfisme dan Generik
PolimorfismeKonversi TipeFungsi GenerikTipe GenerikRangkuman: Kalkulator Bentuk2Struct dan Tipe Nilai
StructSemantik NilaiMethod yang Mengubah NilaiStruct atau classRangkuman, Item Inventaris11Proyek: Manajemen Perpustakaan
Buku dan AnggotaPeminjaman BukuLatihan sendiri: Playground Swift