Kotlin Obyekt va sinflar

Kotlin ham funktsional, ham obyektga yo'naltirilgan dasturlashni qo'llab-quvvatlaydi. Oldingi maqolalarda biz Kotlinni funksional til sifatida ifodalovchi funksiyalar, yuqori darajali funksiyalar va lambdalar haqida bilib oldik. Bu erda biz Kotlinni obyektga yo'naltirilgan dasturlash tili sifatida ifodalovchi asosiy OOP tushunchalari bilan tanishamiz. 

Obyektga yo'naltirilgan dasturlash tili 

Sinf va Obyektlar obyektga yo'naltirilgan dasturlash tilining asosiy tushunchalari. Bular OOPning meros, abstraktsiya va boshqalar tushunchalarini qo'llab-quvvatlaydi. 

Sinf

Java singari, sinf ham o'xshash xususiyatlarga ega bo'lgan ob'ektlar uchun rejadir. Obyektni yaratishdan oldin sinfni aniqlashimiz kerak va class kalit so'zi sinfni aniqlash uchun ishlatiladi. Sinf deklaratsiyasi sinf nomi, sinf sarlavhasi va jingalak qavslar bilan o'ralgan sinf tanasidan iborat. 

Sinf deklaratsiyasining sintaksisi:  

class className { // sinf sarlavhasi
   // mulk
   // a'zo funktsiyasi
}
  • Sinf nomi: har bir sinfning o'ziga xos nomi bor. 
  • Sinf sarlavhasi: sarlavha sinf parametrlari va konstruktorlaridan iborat.
  • Sinf tanasi: jingalak qavslar bilan o'ralgan, a'zo funktsiyalari va boshqa xususiyatlarni o'z ichiga oladi.

Sarlavha ham, sinf tanasi ham ixtiyoriy agar jingalak qavslar orasida hech narsa bo'lmasa, u holda sinf tanasini o'tkazib yuborish mumkin.  

bo'sh sinf

Agar biz konstruktorni taqdim qilmoqchi bo'lsak, sinf nomidan keyin kalit so'z konstruktorini yozishimiz kerak.

Konstruktor yaratish:  

class className konstruktori (parametrlar) {    
   // mulk
   // a'zo funktsiyasi
}

Kotlin sinfiga misol: 

class employee {
    var name: String = ""
    var age: Int = 0
    var gender: Char = 'M'
    var salary: Double = 0.toDouble()
       fun name(){
    }
    fun age() { 
    }
    fun salary(){
    }
}

Obyekt

Bu obyektga yo'naltirilgan dasturlashning asosiy birligi bo'lib, holatlar va xatti-harakatlarga ega bo'lgan real hayot obyektlarini ifodalaydi. Obyektlar sinfning xususiyatlari va a'zo funktsiyalariga kirish uchun ishlatiladi. Kotlinda biz bir nechta sinf obyektlarini yaratishimiz mumkin. Obyekt quyidagilardan iborat:

  • Holat : U obyektning atributlari bilan ifodalanadi. Shuningdek, u obyektning xususiyatlarini aks ettiradi. 
  • Xulq-atvor : u obyektning usullari bilan ifodalanadi. Shuningdek, u obektning boshqa obyektlarga munosabatini aks ettiradi. 
  • Identity : Bu obyektga noyob nom beradi va bir obyektga boshqa obyektlar bilan o'zaro ta'sir qilish imkonini beradi.

Obyekt yarating

Biz sinfning havolasidan foydalanib obyekt yaratishimiz mumkin. 

var obj = className()

Sinf mulkiga kirish:

Biz obyekt yordamida sinfning xususiyatlariga kira olamiz. Birinchidan, sinf ma'lumotnomasidan foydalanib obyekt yarating va keyin xususiyatga kiring. 

obj.nameOfProperty

Sinfning a'zo funktsiyasiga kirish:

Obyekt yordamida sinfning a'zo funksiyasiga kirishimiz mumkin. 

obj.funtion Name(parametrlar)

Bir nechta obyektlarni yaratish va sinfning mulki va a'zo funksiyasiga kirish uchun Kotlin dasturi:

class employee {
    var name: String = ""
    var age: Int = 0
    var gender: Char = 'M'
    var salary: Double = 0.toDouble()
    fun insertValues(n: String, a: Int, g: Char, s: Double) {
        name = n
        age = a
        gender = g
        salary = s
        println("Xodimning ismi: $name")
        println("Xodimning yoshi: $age")
        println("Jins: $gender")
        println("Xodimning ish haqi: $salary")
    }
    fun insertName(n: String) {
        this.name = n
    }
}
fun main(args: Array<String>) {
    var obj = employee()
    var obj2 = employee()
    obj.insertValues("Sherzod", 50, 'M', 500000.00)
    obj2.insertName("Anvar")
    println("Yangi xodimning ismi: ${obj2.name}")
}
Xodimning ismi: Sherzod Xodimning yoshi: 50 Jins: M Xodimning ish haqi: 500000,0 Yangi xodimning ismi: Anvar