اعلان ها و عبارات شی در برنامه نویسی کاتلین

4 سال پیش
اعلان ها و عبارات شی در برنامه نویسی کاتلین

اعلان ها و عبارات شی در برنامه نویسی کاتلین

در این درس از مجموعه آموزش های برنامه نویسی سایت سورس باران، با کمک مثالها، در مورد اعلان ها و عبارات شی در برنامه نویسی کاتلین (Object Declarations and Expressions) یاد خواهید گرفت.

اعلان های شی در کاتلین

Singleton “سینگلتون” یک الگوی شی گرا است که در آن یک کلاس می تواند فقط یک وهله (شی) داشته باشد.

به عنوان مثال، شما در حال کار با برنامه ای هستید که دارای پایگاه داده SQL است. همچنین می‌خواهید یک «استخر اتصال» (Connection Pool) به پایگاه داده ایجاد کنید و در عین حال استفاده از اتصال یکسان برای همه کلاینت ها، یک اتصال ایجاد کنید. برای این منظور می توانید اتصال را از طریق کلاس singleton ایجاد کنید تا هر کلاینت اتصال یکسانی داشته باشد.

برنامه نویسی کاتلین روشی آسان برای ایجاد سینگلتون با استفاده از ویژگی اعلان شی ارائه می دهد. برای آن، از کلید واژه  object استفاده می شود.

object SingletonExample {
    ... .. ...
    // body of class
    ... .. ...
}

 

کد فوق یک تعریف کلاس و یک تعریف از یک نمونه SingletonExample از کلاس را ترکیب می کند.

اعلان شی می تواند شامل مشخصه ها، متد ها و موارد دیگر باشد. با این حال، آنها مجاز به داشتن سازنده نیستند.

مشابه اشیا یک کلاس معمولی، می توانید متدها و مشخصه های دسترسی را با استفاده از با استفاده از نماد نقطه (.) فراخوانی کنید.

 

مثال: اعلان های شی در کاتلین

object Test {
    private var a: Int = 0
    var b: Int = 1

    fun makeMe12(): Int {
        a = 12
        return a
    }
}

fun main(args: Array<String>) {
    val result: Int

    result = Test.makeMe12()

    println("b = ${Test.b}")
    println("result = $result")
}

 

خروجی کد به شکل زیر می باشد؛

b = 1
result = 12

 

اعلان شی می تواند از کلاسها و اینترفیس ها به روشی مشابه کلاسهای عادی ارث بری کند .

سینگلتون ‌ها و تزریق وابستگی در کاتلین

اعلان های اشیا می توانند گاهی مفید باشند با این حال، آنها در سیستم های نرم افزاری بزرگ که با بسیاری از قسمتهای دیگر سیستم تعامل دارند، ایده آل نیستند.

عبارت های شی در برنامه نویسی کاتلین

کلمه کلیدی 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) {
        // ...
    }
}

مثال: عبارت های شی در برنامه نویسی کاتلین

open class Person() {
    fun eat() = println("Eating food.")

    fun talk() = println("Talking with people.")

    open fun pray() = println("Praying god.")
}

fun main(args: Array<String>) {
    val atheist = object : Person() {
        override fun pray() = println("I don't pray. I am an atheist.")
    }

    atheist.eat()
    atheist.talk()
    atheist.pray()
}

 

خروجی کد به شکل زیر می باشد؛

Eating food.
Talking with people.
I don't pray. I am an atheist.

 

در برنامه فوق، شی بی ‌نام در متغیر atheist ذخیره می شود که کلاس Person را پیاده ‌سازی می‌ کند که متد ()pray را باطل ساخته است.

اگر قصد دارید یک کلاس را که سازنده دارد، برای اعلان یک شی بی‌نام اعلان کنید، باید پارامترهای مناسبی به سازنده ارسال نمایید.

open class Person(name: String, age: Int) {

    init {
        println("name: $name, age: $age")
    }

    fun eat() = println("Eating food.")
    fun talk() = println("Talking with people.")
    open fun pray() = println("Praying god.")
}

fun main(args: Array<String>) {
    val atheist = object : Person("Jack", 29) {
        override fun pray() = println("I don't pray. I am an atheist.")
    }

    atheist.eat()
    atheist.talk()
    atheist.pray()
}

 

خروجی کد به شکل زیر می باشد؛

name: Jack, age: 29
Eating food.
Talking with people.
I don't pray. I am an atheist.

 

منبع.

لیست جلسات قبل آموزش برنامه نویسی کاتلین

  1. معرفی کاتلین،  Kotlin Hello World – اولین برنامه کاتلین
  2. انواع متغیرهای پایه در کاتلین
  3. عملگرهای برنامه نویسی کاتلین
  4. تبدیل نوع در برنامه نویسی کاتلین
  5. عبارت ها، گزاره ها و بلوک ها در برنامه نویسی کاتلین
  6. کامنت ها در برنامه نویسی کاتلین
  7. ورودی / خروجی پایه در برنامه نویسی کاتلین
  8. عبارت if در برنامه نویسی کاتلین
  9. عبارت when در برنامه نویسی کاتلین
  10. حلقه های while و do … while در برنامه نویسی کاتلین
  11. حلقه for در برنامه نویسی کاتلین
  12. عبارت break در برنامه نویسی کاتلین
  13. عبارت continue در برنامه نویسی کاتلین
  14. توابع در برنامه نویسی کاتلین
  15. فراخوانی تابع میانوندی در برنامه نویسی کاتلین
  16. آرگومان ‌های پیش ‌فرضآرگومان ‌های پیش ‌فرض و نام ‌دار در برنامه نویسی کاتلین
  17. توابع بازگشتی در برنامه نویسی کاتلین
  18. کلاس و شی در برنامه نویسی کاتلین
  19. سازنده ها در برنامه نویسی کاتلین
  20. Getter ها و Setter ها در برنامه نویسی کاتلین
  21. وراثت در برنامه نویسی کاتلین 
  22. مادیفایرهای نمایانی در برنامه نویسی کاتلین
  23. کلاس مجرد در برنامه نویسی کاتلین
  24. اینترفیس های برنامه نویسی کاتلین
  25. کلاس‌ های تودرتو و داخلی در برنامه نویسی کاتلین
  26. کلاس داده در برنامه نویسی کاتلین 
  27. کلاس ‌های Sealed در برنامه نویسی کاتلین
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه