Menu
Coddy logo textTech

הגדרת מחלקות

חלק מהיחידה תכנות מונחה עצמים במסלול ה-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
    }
}
challenge icon

אתגר

קל

השלימו את המתודה 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())
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: Kotlin אונליין