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

4 سال پیش

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

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

زبان برنامه نویسی کاتلین از برنامه نویسی کاربردی و شی گرا پشتیبانی می کند.

کاتلین از ویژگی هایی مانند توابع مرتبه بالاتر، انواع مختلف توابع و لامبدا پشتیبانی می کند که باعث می شود گزینه مناسبی برای کار در سبک برنامه نویسی کاربردی باشد. در فصل های بعدی با این مفهوم آشنا خواهید شد. این مقاله به سبک برنامه نویسی شی گرا در زبان برنامه نویسی کاتلین می پردازیم.

برنامه نویسی شی گرا در کاتلین (OOP)

در سبک برنامه نویسی شی گرا، می توانید با ایجاد شی یک مسئله پیچیده را به مجموعه های کوچکتر تقسیم کنید.

این اشیا دارای دو ویژگی هستند:

  1. حالت
  2. رفتار

چند مثال ساده :

  1. لامپ یک شی است
    –  می تواند در حالت روشن یا خاموش باشد.
    – می توانید لامپ را روشن و خاموش کنید (رفتار).
  2. دوچرخه یک شی است
    – دوچرخه می تواند حالت هایی مانند دنده فعلی ( current gear)، دو چرخ (two wheels)، تعداد دنده (number of gear) و غیره است.
    – دارای ترمز، شتاب، تغییر دنده و بسیاری رفتار دیگر است.

 

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

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

کلاس یک طرح اولیه برای آن شی است.

می توانیم کلاس را به عنوان طرحی (نمونه اولیه) از یک خانه در نظر بگیریم. این شامل تمام جزئیات مربوط به کف، در، پنجره و غیره است. بر اساس این توصیفات ما خانه را می سازیم. در واقع خانه شی است.

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

 

چگونه در برنامه نویسی کاتلین کلاس تعریف کنیم؟

برای تعریف کلاس در کاتلین، از کلید واژه کلاس استفاده می شود:

class ClassName {
    // property
    // member function
    ... .. ...
}

 

مثال:

class Lamp {

    // property (data member)
    private var isOn: Boolean = false

    // member function
    fun turnOn() {
        isOn = true
    }

    // member function
    fun turnOff() {
        isOn = false
    }
}

 

در اینجا، ما یک کلاس به نام Lamp تعریف کردیم.

کلاس دارای یک ویژگی isOn است (به همان روشی که متغیر تعریف شده است) و دو تابع عضو turnOn () و turnOff () می باشند.

در برنامه نویسی کاتلین، یا مشخصه باید مقدار دهی شود یا باید به صورت انتزاعی اعلام شود در مثال بالا، ویژگی isOn به false مقداردهی اولیه می شود.

کلاس ها، اشیا، مشخصه ها ، تابع عضو و غیره می توانند مادیفایر نمایی (visibility) داشته باشند. به عنوان مثال، خاصیت isOn خصوصی است. این بدان معنی است که ویژگی isOn فقط از داخل کلاس Lamp قابل تغییر است.

 

سایر مادیفایر های نمایی عبارتند از:

  • خصوصی (private) – فقط از داخل کلاس قابل مشاهده است (قابل دسترسی است).
  • عمومی (public) – در همه جا قابل مشاهده است.
  • محافظت شده (protected)- برای کلاس و زیر کلاس آن قابل مشاهده است.
  • داخلی (internal) – هر کلاینت درون ماژول می تواند به آنها دسترسی پیدا کند.

اگر نوع مدیفایر را مشخص نکنید، به طور پیش فرض عمومی خواهد بود.

در برنامه فوق، توابع عضو turnOn () و turnOff () عمومی هستند در حالی که ویژگی isOn خصوصی است.

 

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

وقتی کلاس تعریف می شود، در واقع فقط مشخصات مربوط به یک شی تعریف می شود. و هیچ گونه حافظه یا فضای ذخیره سازی به آن اختصاص داده نشده است.

برای دسترسی به اعضای تعریف شده در کلاس، باید اشیا ایجاد کنید. در ادامه مثال قبل بیایید اشیا کلاس Lamp را ایجاد کنیم.

class Lamp {

    // property (data member)
    private var isOn: Boolean = false

    // member function
    fun turnOn() {
        isOn = true
    }

    // member function
    fun turnOff() {
        isOn = false
    }
}

fun main(args: Array<String>) {

    val l1 = Lamp() // create l1 object of Lamp class
    val l2 = Lamp() // create l2 object of Lamp class
}

 

این برنامه دو شی l1 و l2 از کلاس Lamp ایجاد می کند. خاصیت isOn برای هر دو لامپ l1 و l2 نادرست (false) خواهد بود.

 

چگونه در برنامه نویسی کاتلین به اعضا دسترسی پیدا کنیم؟

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

l1.turnOn()

 

این دستور تابع turnOn () را برای شی l1 فراخوانی می کند.

بیایید یک مثال دیگر بزنیم:

l2.isOn = true

 

در اینجا، ما سعی کردیم  مشخصه isOn شی l l2 را به صورت true قرار دهیم. توجه داشته باشید که، خاصیت isOn خصوصی است و اگر سعی کنید از خارج از کلاس به isOn دسترسی پیدا کنید، یک استثنا ایجاد می شود.

 

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

class Lamp {

    // property (data member)
    private var isOn: Boolean = false

    // member function
    fun turnOn() {
        isOn = true
    }

    // member function
    fun turnOff() {
        isOn = false
    }

    fun displayLightStatus(lamp: String) {
        if (isOn == true)
            println("$lamp lamp is on.")
        else
            println("$lamp lamp is off.")
    }
}

fun main(args: Array<String>) {

    val l1 = Lamp() // create l1 object of Lamp class
    val l2 = Lamp() // create l2 object of Lamp class

    l1.turnOn()
    l2.turnOff()

    l1.displayLightStatus("l1")
    l2.displayLightStatus("l2")
}

 

هنگامی که برنامه را اجرا می کنید، خروجی به شکل زیر خواهد بود:

l1 Lamp is on.
l2 Lamp is off.

 

در مثال فوق،

  • در گام اول کلاس Lamp ایجاد می شود.
  • کلاس دارای یک ویژگی isOn و سه عضو است که turnOn () ، turnOff () و displayLightStatus () دارد.
  • دو شی l1 و l2 از کلاس Lamp در تابع اصلی () ایجاد می شوند.
  • در گام بعدی، تابع () turnOn با استفاده از شی l1 به صورت l1.turnOn () فراخوانی می شود: این روش متغیر isOn نمونه ای از شی l1 را به true تنظیم می کند.
  • سپس، تابع turnOff () با استفاده از شی l2 به صورت l1.turnOff () فراخوانی می شود: این متد متغیر isOff نمونه شی l2 را روی false تنظیم می کند.
  • سپس، تابع () displayLightStatus برای اشیا l1 و l2 فراخوانی می شود که بسته به درست یا نادرست بودن ویژگی isOn پیام مناسب را چاپ می کند.

توجه داشته باشید که خاصیت isOn در کلاس به صورت false آغاز می شود. هنگامی که یک شی از کلاس ایجاد می شود، ویژگی isOn برای شی به صورت خودکار  روی false تنظیم می شود. بنابراین، لازم نیست که شی l2 برای فراخوانی turnOff () و تنظیم مشخصه isOn روی false باشد.

به عنوان مثال:

class Lamp {

    // property (data member)
    private var isOn: Boolean = false

    // member function
    fun turnOn() {
        isOn = true
    }

    // member function
    fun turnOff() {
        isOn = false
    }

    fun displayLightStatus() {
        if (isOn == true)
            println("lamp is on.")
        else
            println("lamp is off.")
    }
}

fun main(args: Array<String>) {

    val lamp = Lamp()
    lamp.displayLightStatus()
}

 

هنگامی که برنامه را اجرا می کنید، خروجی به شکل زیر خواهد بود:

lamp is off.

 

این مقاله فقط مقدمه ای بر برنامه نویسی شی گرا در کاتلین بود، در ادامه جزئیات بیشتری را به شما خواهیم گفت.

 

منبع.

 

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

  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. توابع بازگشتی در برنامه نویسی کاتلین
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه