סיכום – כרטיס ספרייה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Kotlin של Coddy. שיעור 6 מתוך 57.
אתגר
בינוניהצהר על המחלקה 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)
}
}
כל השיעורים ביחידה תכנות מונחה עצמים
1מחלקות ואובייקטים
עבודה עם קבציםהגדרת מחלקותבנאים ראשייםבלוקי init ואימות נתוניםבנאים משנייםסיכום – כרטיס ספרייהתרגלו בעצמכם: Kotlin אונליין