Obyekt va sinflar — OOP ning amaliy poydevori. OOP darsida ular bilan qisqacha tanishdik; endi sinf tuzilishini, uning xususiyatlari va metodlarini batafsil ko’rib chiqamiz. Kotlin sinflari juda ixcham va kuchli.
Sinf (class) — obyektlar yaratish uchun andoza. U obyektning xususiyatlarini (properties) va metodlarini bir joyda ta’riflaydi.
Sinf tuzilishi
Sinf ichida xususiyatlar va metodlar bo’ladi. Mahsulot sinfini quramiz:
class Mahsulot {
var nomi = ""
var narxi = 0
fun korsat() {
println("$nomi — $narxi so'm")
}
}
fun main() {
val telefon = Mahsulot()
telefon.nomi = "iPhone"
telefon.narxi = 12000000
telefon.korsat()
}
iPhone — 12000000 so'm
Bu yerda nomi va narxi — xususiyatlar (properties), korsat() — metod. Metod obyektning o’z xususiyatlariga bevosita murojaat qila oladi.
Metod — qiymat qaytaruvchi
Metod natija qaytarishi mumkin:
class Kvadrat {
var tomon = 0
fun yuza(): Int = tomon * tomon
}
fun main() {
val k = Kvadrat()
k.tomon = 5
println("Yuza: ${k.yuza()}")
}
Yuza: 25
yuza() metodi tomon xususiyatiga tayanib hisob-kitob qildi. Bu yerda bir ifodali metod (=) yozdik.
data class — ma’lumot sinfi
Kotlin’ning ajoyib imkoniyati — data class. U ma’lumot saqlash uchun avtomatik ko’plab foydali metodlar yaratadi:
data class Foydalanuvchi(val ism: String, val yosh: Int)
fun main() {
val u = Foydalanuvchi("Farrux", 26)
println(u) // avtomatik chiroyli chiqarish
println(u.ism)
}
Foydalanuvchi(ism=Farrux, yosh=26)
Farrux
data class — bir qatorda to’liq ma’lumot sinfini yaratdi. U avtomatik toString (chiroyli chiqarish), equals va boshqa metodlarni beradi. Bu ma’lumot saqlash uchun ideal va Kotlin’da juda ko’p ishlatiladi.
Xususiyat (property)
Kotlin’da maydonlar aslida xususiyat (property) deb ataladi — ular avtomatik get/set ga ega. Bu inkapsulatsiyani soddalashtiradi (buni keyingi darslarda ko’ramiz).
Xulosa
Bu bo’limda sinf tuzilishi (xususiyat va metodlar), qiymat qaytaruvchi metodlar va Kotlin’ning kuchli data class imkoniyatini ko’rib chiqdik. Sinf — ma’lumot va xatti-harakatni jamlovchi birlik. Keyingi darsda metodlarga chuqurroq kirib boramiz.