הגדרת מחלקות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-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 אונליין