Menu
Coddy logo textTech

סיכום – משרד הכרטיסים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Kotlin של Coddy. שיעור 16 מתוך 57.

challenge icon

אתגר

בינוני

בנו משרד כרטיסים קטן באמצעות שלושה סוגי הצהרות.

  • Ticket כולל בנאי פרטי שמקבל את number, את show ואת seat. האובייקט המלווה שלו מכיל את const val SEATS = 3, מונה פרטי ואת מפעל הכרטיסים issue(show, seat), שמקצה לכרטיסים את המספרים 1, 2, 3, ...; issued הוא מספר הכרטיסים שהונפקו עד כה. label() מחזירה #1 Hamlet seat 2.
  • BoxOffice הוא אובייקט. sell(show, seat) מחזירה no seat 4 כשהמושב מחוץ לטווח שבין 1 ל־Ticket.SEATS, seat 2 taken כשהמושב נמכר עבור אותה הצגה, ובכל מקרה אחר מנפיקה כרטיס ומחזירה את התווית שלו. refund(number) משחררת את המושב של כרטיס שנמכר ומחזירה refunded #1, או no ticket #9. report() מחזירה Hamlet 2/3, Cats 1/3 כשההצגות מסודרות לפי סדר אלפביתי, או nothing sold.

הקוד שסופק קורא פקודות sell Hamlet 2, refund 1 או report, מדפיס כל תשובה ולבסוף tickets issued: יחד עם המספר. מספרים אינם בשימוש חוזר לאחר החזר כספי.

יש לכתוב את הקוד שלכם ב־Ticket.kt וב־BoxOffice.kt. Main.kt מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.

נסו בעצמכם

fun main() {
    // קוד קלט/פלט שסופק: יש להשאיר אותו כפי שהוא
    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}")
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: Kotlin אונליין