Menu
CoddyTech

تعريف الفئات

جزء من قسم البرمجة كائنية التوجه في رحلة 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اختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: Playground لـ Kotlin