הגדרת מחלקות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Kotlin של Coddy. שיעור 2 מתוך 57.
מחלקה מתארת סוג של אובייקט: את הנתונים שהוא מכיל ואת הפעולות שהוא יכול לבצע. class Dog { ... } מצהירה על הטיפוס, ו-Dog() יוצרת אובייקט מטיפוס זה, מופע. ב-Kotlin אין מילת מפתח new:
class Dog {
var name = "Rex"
var age = 3
}בתוך main:
val dog = Dog()
println(dog.name)
println(dog.age)פלט:
Rex
3המשתנים בתוך מחלקה הם המאפיינים שלה. לכל מופע יש עותק משלו, שאותו קוראים ומשנים באמצעות נקודה:
class Dog {
var name = "Rex"
}בתוך main:
val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)פלט:
Rex
Bellaפונקציה בתוך מחלקה היא מתודה (ב-Kotlin קוראים להן פונקציות חברה). מתודה יכולה לקרוא את המאפיינים של המופע שעליו היא נקראת ולשנות אותם:
class Counter {
var count = 0
fun increment() {
count++
}
fun report() = "count is $count"
}בתוך main:
val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())פלט:
count is 2שמות מחלקות נכתבים ב־UpperCamelCase (BankAccount); מאפיינים ומתודות נכתבים ב־lowerCamelCase (balance, deposit()). קיבוץ הנתונים עם הפונקציות שפועלות עליהם הוא הרעיון המרכזי בתכנות מונחה עצמים: קוד שמשתמש ב־Counter קורא ל־increment() ואינו צריך לדעת איך המנייה נשמרת.
class BankAccount {
var balance = 0
fun deposit(amount: Int) {
balance += amount
}
}אתגר
קלהשלימו את המתודה describe() של המחלקה Pet. היא מחזירה משפט אחד שנבנה מהמאפיינים: חיית מחמד בשם Rex, ממין dog, שגילה 3, מחזירה את Rex is a 3 year old dog.
הקוד שסופק יוצר Pet, מגדיר את המאפיינים שלה מהקלט (שם, מין, גיל) ומדפיס את התוצאה של describe().
הקוד שלכם צריך להיכתב בקובץ Pet.kt. הקובץ Main.kt מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
fun main() {
// קוד קלט/פלט שסופק: יש להשאיר אותו כפי שהוא
val input = generateSequence(::readLine).toList()
val pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = input[2].toInt()
println(pet.describe())
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1מחלקות ואובייקטים
עבודה עם קבציםהגדרת מחלקותבנאים ראשייםבלוקי init ואימות נתוניםבנאים משנייםסיכום – כרטיס ספרייהתרגלו בעצמכם: Kotlin אונליין