English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل Kotlin الأساسي

تحكم Kotlin

الوظائف في Kotlin

السلاسل في Kotlin

Kotlin منظم بالفئات (OOP)

إعلان العنصر ولفظ Kotlin

في هذا المقال، ستعرف عن طريق الأمثلة إعلان العنصر (السينغلتون) وإعلام العنصر.

إعلان العنصر

السينغلتون هي نموذج منسق لأحد الفئات التي يمكنها أن يكون لديها فقط مثال واحد (عنصر).
على سبيل المثال، إذا كنت تقوم بتطوير تطبيق يحتوي على خلفية قاعدة بيانات SQL. تريد إنشاء مجموعة من الاتصالات لتحصل على الوصول إلى قاعدة البيانات، ولمشاركة الاتصال نفسه مع جميع العملاء. لهذا، يمكنك إنشاء اتصال من خلال فئة السينغلتون، بحيث يحصل كل عميل على الاتصال نفسه.

يقدم Kotlin طريقة سهلة لإنشاء السينغلتون باستخدام خاصية إعلان العنصر. من أجل ذلك، استخدم كلمة المفتاح object.

object SingletonExample {
    ... .. ...
    // جسم الفئة
    ... .. ...
}

يحتوي الكود أعلاه على إعلان عن فئة وواحدة من استطلاعات هذه الفئة SingletonExample.

يمكن لتعريف العنصر أن يحتوي على الخصائص والعمليات، ولكن لا يسمح لها بوجود بناء (وهذا له معنى).

مثل عناصر الفئات العادية، يمكنك استخدام الرمز . للدعوة إلى العمليات والوصول إلى الخصائص.

مثال: إعلان العنصر

النوع object Test {}}
    خاصة النوع var a: Int = 0
    النوع var b: Int = 1
    النوع fun makeMe12(): Int {
        a = 12
        العودة a
    }
}
fun main(args: Array<String>) {
    النوع val result: Int
    result = Test.makeMe12()
    طباعة("b = ${Test.b}")
    طباعة("result = $result")
}

عند تشغيل هذا البرنامج، الناتج سيكون:

b = 1
result = 12

تعبرات الكائن يمكن أن تورث مثل الفئات والواجهات.

النوع الواحد وحقن الاعتماد

تعبرات الكائن يمكن أن تكون مفيدة أحيانًا. ولكنها ليست مثالية في أنظمة برمجية كبيرة تحتوي على تفاعلات مع العديد من أجزاء النظام الأخرى.

تعبيرات كائن Kotlin

يمكن استخدام كلمة المفتاح object أيضًا لإنشاء كائنات للفئات المجهولة، وتسمى كائنات مجهولة. إذا كنت بحاجة إلى إنشاء كائن قليل التغيير للفئة أو الوجهة، دون الحاجة إلى تعريف فرعية، فيمكنك استخدامها. على سبيل المثال،

window.addMouseListener(object : MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) {
        // ...
    }
    override fun mouseEntered(e: MouseEvent) {
        // ...
    }
}

في هذا السياق، تم إعلان تعبير كائن للفئة MouseAdapter. يتم تعديل طريقتي MouseAdapter: mouseClicked() و mouseEntered().

إذا لزم الأمر، يمكن تخصيص اسم للكائن المجهول ووضعه في متغير. على سبيل المثال:

النوع val obj = object : MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) {
        // ...
    }
    override fun mouseEntered(e: MouseEvent) {
        // ...
    }
}

مثال: تعبيرات كائن Kotlin

فتح_فئة_مفتوحة Person() {
    أكل() = طباعة("أكل.")
    تحدث_مع_الناس() = طباعة("تحدث مع الناس.")
    open fun pray() = println("أُصلّي إلى الله.")
}
fun main(args: Array<String>) {
    النوع val atheist = object : Person() {
        override fun pray() = println("أُصلّي إلى الله.")
    }
    atheist.eat()
    atheist.talk()
    atheist.pray()
}

عند تشغيل هذا البرنامج، الناتج سيكون:

تناول الطعام.
التحدث مع الآخرين.
أنا لا أُصلّي. أنا مجرد ملحد.

في هذا السياق، يتم تخزين الكائن المجهول في المتغير atheist، والذي يحقق الفئة Person، يتم تعديل طريقة pray().

إذا كان لديه تصريح للفئة التي تحقق من تعريف بناء مجهول، فيجب تقديم معرف بناء مناسب. على سبيل المثال،

فتح_فئة_مفتوحة Person(name: String, age: Int) {
    ابتداءً {
        طباعة("اسم: $name, العمر: $age")
    }
    أكل() = طباعة("أكل.")
    تحدث_مع_الناس() = طباعة("تحدث مع الناس.")
    open fun pray() = println("أُصلّي إلى الله.")
}
fun main(args: Array<String>) {
    val atheist = object : Person("Jack", 29) {
        override fun pray() = println("أُصلّي إلى الله.")
    }
    atheist.eat()
    atheist.talk()
    atheist.pray()
}

عند تشغيل هذا البرنامج، الناتج سيكون:

الاسم: Jack، العمر: 29
تناول الطعام.
التحدث مع الآخرين.
أنا لا أُصلّي. أنا مجرد ملحد.