בנאים ראשיים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Kotlin של Coddy. שיעור 3 מתוך 57.
רוב המחלקות ב-Kotlin מקבלות את ערכי ההתחלה שלהן בבנאי ראשי, שנכתב בסוגריים אחרי שם המחלקה. הוספת val או var לפני פרמטר הופכת אותו גם למאפיין:
class Book(val title: String, var pages: Int)בתוך main:
val book = Book("Dune", 412)
println(book.title)
book.pages += 8
println(book.pages)פלט:
Dune
420פרמטר ללא val או var זמין רק בזמן יצירת המופע, למשל כדי לחשב מאפיין. אי אפשר להקצות מחדש מאפייני val לאחר היצירה; אפשר להקצות מחדש מאפייני var:
class Temperature(celsius: Double) {
val fahrenheit = celsius * 9 / 5 + 32
}בתוך main:
val t = Temperature(100.0)
println(t.fahrenheit)פלט:
212.0לפרמטרים של בנאי יכולים להיות ערכי ברירת מחדל, ואפשר להעביר אותם לפי שם, כך שבנאי אחד מתאים לדרכים רבות ליצירת מופע:
class Timer(val seconds: Int, val label: String = "timer")בתוך main:
val egg = Timer(300, "egg")
val quick = Timer(30)
val named = Timer(label = "tea", seconds = 180)
println("${egg.label} ${egg.seconds}")
println("${quick.label} ${quick.seconds}")
println("${named.label} ${named.seconds}")פלט:
egg 300
timer 30
tea 180בתוך גוף המחלקה, this מתייחס למופע הנוכחי. הוא נחוץ כאשר לפרמטר של מתודה יש שם זהה לזה של מאפיין:
class Player(var name: String) {
fun rename(name: String) {
this.name = name
}
}בתוך main:
val p = Player("anon")
p.rename("Ada")
println(p.name)פלט:
Adaאתגר
קלהצהירו על המחלקה Account עם בנאי ראשי: owner לקריאה בלבד ו-balance שניתן לשינוי, עם ערך ברירת מחדל 0. הוסיפו את summary(), שמחזירה את Ada has 150.
הקוד שסופק קורא בעלים, וכאשר קיימת שורה שנייה, גם יתרת פתיחה. הוא יוצר את החשבון עם היתרה או בלעדיה ומדפיס את summary().
הקוד שלכם צריך להופיע ב-Account.kt. הקובץ Main.kt מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
fun main() {
// קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
val input = generateSequence(::readLine).toList()
val account = if (input.size > 1) Account(input[0], input[1].toInt()) else Account(input[0])
println(account.summary())
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1מחלקות ואובייקטים
עבודה עם קבציםהגדרת מחלקותבנאים ראשייםבלוקי init ואימות נתוניםבנאים משנייםסיכום – כרטיס ספרייהתרגלו בעצמכם: Kotlin אונליין