Menu
CoddyTech

Ôn tập: Phòng bán vé

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 16 trên 57.

challenge icon

Thử thách

Trung bình

Xây dựng một phòng vé nhỏ bằng ba kiểu khai báo.

  • Ticket có hàm khởi tạo riêng nhận number, show và seat. Đối tượng đồng hành chứa const val SEATS = 3, một biến đếm riêng và hàm tạo issue(show, seat), hàm này cấp cho vé các số 1, 2, 3, ...; issued là số vé đã phát hành tính đến thời điểm hiện tại. label() trả về #1 Hamlet seat 2.
  • BoxOffice là một đối tượng. sell(show, seat) trả lời no seat 4 khi số ghế nằm ngoài khoảng từ 1 đến Ticket.SEATS, seat 2 taken khi ghế đó đã được bán cho suất diễn đó, nếu không thì phát hành một vé và trả lời bằng nhãn của vé. refund(number) giải phóng ghế của vé đã bán và trả lời refunded #1, hoặc no ticket #9. report() trả lời Hamlet 2/3, Cats 1/3 với các suất diễn theo thứ tự bảng chữ cái, hoặc nothing sold.

Code được cung cấp đọc các lệnh sell Hamlet 2, refund 1 hoặc report, in ra từng câu trả lời và cuối cùng in tickets issued: kèm số lượng. Số vé không bao giờ được dùng lại sau khi hoàn tiền.

Code của bạn nằm trong Ticket.kt và BoxOffice.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()
    for (cmd in input) {
        val p = cmd.split(" ")
        when (p[0]) {
            "sell" -> println(BoxOffice.sell(p[1], p[2].toInt()))
            "refund" -> println(BoxOffice.refund(p[1].toInt()))
            else -> println(BoxOffice.report())
        }
    }
    println("tickets issued: ${Ticket.issued}")
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Playground Kotlin