Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تعريف الفئات

جزء من قسم البرمجة كائنية التوجه في رحلة Kotlin على Coddy. الدرس 2 من 57.

تصف class نوعًا من الكائنات: البيانات التي يحتفظ بها وما يمكنه فعله. يعلن 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