Menu
Coddy logo textTech

סיכום – כרטיס ספרייה

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

challenge icon

אתגר

בינוני

הצהר על המחלקה LibraryCard(val name: String, val limit: Int = 3). בלוק init שלה דורש שם שאינו ריק (name is empty) ומגבלה של 1 לפחות (limit must be positive). היא שומרת רשימה של כותרי הספרים שהושאלו. borrow(title) מחזירה true ומוסיפה את הכותרת, אלא אם הכרטיס הגיע למגבלה שלו או שהכותרת כבר נמצאת בו. giveBack(title) מחזירה true כשהכותרת הוסרה. status() מחזירה Ada: 2/3 (Dune, Emma) לפי סדר ההשאלה, או Ada: 0/3 כשלא הושאל דבר.

הקוד שסופק קורא את השם, את המגבלה (או שורה ריקה כדי להשתמש בברירת המחדל), ואז פקודות +title או -title. הוא מדפיס ok או no עבור כל פקודה, ולבסוף את status(); אם הכרטיס אינו תקין, הוא מדפיס במקום זאת את הודעת השגיאה.

יש לכתוב את הקוד שלך בקובץ LibraryCard.kt. הקובץ Main.kt מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.

נסו בעצמכם

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

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

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