مراجعة - حارس حديقة الحيوانات
جزء من قسم البرمجة كائنية التوجه في رحلة Kotlin على Coddy. الدرس 31 من 57.
التحدي
متوسطخطّط ليوم في حديقة الحيوانات.
-
Animal(name, kg)صنف مجرد يحتوي على الأعضاء المجردةspeciesوfoodوdailyGrams()، وعلى أسلوبline()يعيدLeo the lion: 5700 g meat. -
Lionيأكل اللحم بمقدار 30 غ لكل كغ. أماParrotفيأكل البذور بمقدار 50 غ يوميًا مهما كان وزنه. وSealيأكل السمك بمقدار 40 غ لكل كغ. - تحتوي الواجهة
Trainableعلىtrick(). الببغاوات (Polly says hello) والفقمات (Sammy balances a ball) قابلة للتدريب؛ أما الأسود فليست كذلك. - يعيد الامتداد
List<Animal>.foodTotals()عدد الغرامات لكل نوع من الطعام، مع ترتيب الأطعمة أبجديًا:fish 4000, meat 5700. - يعيد
showLineup(animals)حيل الحيوانات القابلة للتدريب بالترتيب، باستخدام فحص للنوع، أوno showعندما لا توجد حيوانات قابلة للتدريب.
يقرأ الكود المزوَّد الأسطر lion,Leo,190 أو parrot,Polly,1 أو seal,Sammy,100، ويطبع كل line()، ثم food: مع الإجماليات، وسطر show: واحدًا لكل حيلة مُعادة.
ضع الكود الخاص بك في Animal.kt وTrainable.kt وLion.kt وParrot.kt وSeal.kt وFunctions.kt. يحتوي Main.kt على كود الإدخال/الإخراج المزوَّد، ولا يمكن تعديله.
جرّب بنفسك
fun main() {
// كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
val input = generateSequence(::readLine).toList()
val animals = input.map { line ->
val (kind, name, kg) = line.split(",")
when (kind) {
"lion" -> Lion(name, kg.toInt())
"parrot" -> Parrot(name, kg.toInt())
else -> Seal(name, kg.toInt())
}
}
for (a in animals) println(a.line())
println("food: " + animals.foodTotals())
for (s in showLineup(animals)) println("show: $s")
}
جميع دروس البرمجة كائنية التوجه
1الفئات والكائنات
العمل مع الملفاتتعريف الفئاتالمنشئات الأساسيةكتل init والتحقق من الصحةالمنشئات الثانويةمراجعة - بطاقة المكتبة4الوراثة
الأصناف المفتوحة والأصناف الفرعيةتجاوز الأعضاءsuper والمنشئاتالأصناف المجرّدةمراجعة - دليل الموظفين3الكائنات والكائنات المرافقة
تعريفات الكائناتالكائنات المرافقةالثوابت باستخدام constتعبيرات الكائناتمراجعة - شباك التذاكر6تعدد الأشكال
التوجيه الديناميكيفحوصات الأنواع والتحويلات الذكيةwhen مع الأنواعدوال التوسعةمراجعة - حارس حديقة الحيواناتتدرّب بنفسك: Playground لـ Kotlin