Ôn tập: tài khoản ngân hàng
Thuộc phần Lập trình hướng đối tượng trong hành trình Kotlin của Coddy. Bài học 11 trên 57.
Thử thách
Trung bìnhHoàn thiện lớp BankAccount(val owner: String, opening: Int). Khối init yêu cầu tên chủ tài khoản không được để trống (owner is empty) và khoản tiền gửi ban đầu không âm (opening must not be negative). balance có setter riêng tư. Các giao dịch được lưu trong MutableList riêng tư và hiển thị dưới dạng val transactions: List<String>. deposit(amount) và withdraw(amount) trả về true khi thành công: các khoản tiền nhỏ hơn 1 bị từ chối, và khoản rút lớn hơn số dư cũng bị từ chối; các thay đổi thành công được ghi lại dưới dạng +50 hoặc -20. statement() trả về Ada: 30 (+50, -20) hoặc Ada: 0 (no transactions).
Code được cung cấp đọc tên chủ tài khoản và khoản tiền gửi ban đầu (name,amount), sau đó đọc các lệnh d n hoặc w n. Code in ra refused cho các lệnh thất bại, rồi in sao kê; tài khoản không hợp lệ sẽ in thông báo lỗi.
Viết code của bạn trong BankAccount.kt. Main.kt chứa code đầu vào/đầu ra được cung cấp và không thể chỉnh sửa.
Tự làm thử
fun main() {
// Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
val input = generateSequence(::readLine).toList()
try {
val (name, amount) = input[0].split(",")
val account = BankAccount(name, amount.toInt())
for (cmd in input.drop(1)) {
val (op, n) = cmd.split(" ")
val ok = if (op == "d") account.deposit(n.toInt()) else account.withdraw(n.toInt())
if (!ok) println("refused")
}
println(account.statement())
} catch (e: IllegalArgumentException) {
println(e.message)
}
}
Tất cả bài học trong Lập trình hướng đối tượng
1Lớp và đối tượng
Làm việc với tệpĐịnh nghĩa lớpHàm khởi tạo chínhKhối init và kiểm tra tính hợp lệHàm khởi tạo phụÔn tập: thẻ thư viện4Kế thừa
Lớp mở và lớp conGhi đè thành viênsuper và hàm khởi tạoLớp trừu tượngÔn tập: Danh bạ nhân viên2Thuộc tính và tính đóng gói
Trình truy cập tùy chỉnhBộ sửa đổi phạm vi truy cậpSetter riêng tưlazy và lateinitÔn tập: tài khoản ngân hàng5Giao diện
Khai báo giao diệnPhương thức mặc địnhNhiều giao diệnGiao diện như kiểu dữ liệuÔn tập: Phương thức thanh toánTự luyện tập: Playground Kotlin