مراجعة - بطاقة المكتبة
جزء من قسم البرمجة كائنية التوجه في رحلة 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 والتحقق من الصحةالمنشئات الثانويةمراجعة - بطاقة المكتبة4الوراثة
الأصناف المفتوحة والأصناف الفرعيةتجاوز الأعضاءsuper والمنشئاتالأصناف المجرّدةمراجعة - دليل الموظفينتدرّب بنفسك: Playground لـ Kotlin