Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - بطاقة المكتبة

جزء من قسم البرمجة كائنية التوجه في رحلة 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)
    }
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: Playground لـ Kotlin