סיכום – שומר גן החיות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-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 ואימות נתוניםבנאים משנייםסיכום – כרטיס ספרייה3אובייקטים ואובייקטים נלווים
הצהרות אובייקטאובייקטים נלוויםקבועים עם constביטויי אובייקטסיכום – משרד הכרטיסים6רב־צורתיות
שליחה דינמיתבדיקות טיפוסים והמרות טיפוסים חכמותwhen עם טיפוסיםפונקציות הרחבהסיכום – שומר גן החיותתרגלו בעצמכם: Kotlin אונליין