Ôn tập: thẻ thư viện
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 6 trên 57.
Thử thách
Trung bìnhKhai báo lớp LibraryCard(val name: String, val limit: Int = 3). Khối init yêu cầu tên không được để trống (name is empty) và giới hạn ít nhất là 1 (limit must be positive). Lớp này lưu danh sách các tên sách đã mượn. borrow(title) trả về true và thêm tên sách, trừ khi thẻ đã đạt giới hạn hoặc đã có tên sách đó. giveBack(title) trả về true khi xóa tên sách. status() trả về Ada: 2/3 (Dune, Emma) theo thứ tự mượn, hoặc Ada: 0/3 khi chưa mượn sách nào.
Code được cung cấp đọc tên, giới hạn (hoặc một dòng trống để dùng giá trị mặc định), sau đó là các lệnh +title hoặc -title. Code in ra ok hoặc no cho mỗi lệnh, cuối cùng in ra status(); nếu thẻ không hợp lệ, code sẽ in thông báo lỗi.
Đặt code của bạn trong LibraryCard.kt. Main.kt chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.
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 card = if (input[1].isEmpty()) LibraryCard(input[0]) else LibraryCard(input[0], input[1].toInt())
for (cmd in input.drop(2)) {
val title = cmd.drop(1)
val done = if (cmd.startsWith("+")) card.borrow(title) else card.giveBack(title)
println(if (done) "ok" else "no")
}
println(card.status())
} 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