Darsliklar Kotlin Enkapsulatsiya. (Sinf/Class)

Kotlin Kotlin Enkapsulatsiya. (Sinf/Class)

Enkapsulatsiya — OOP ning birinchi ustuni. Uning mohiyati: obyektning ichki ma’lumotini tashqi dunyodan yashirib, unga faqat nazorat qilinadigan yo’llar orqali kirish. Bu ma’lumotni tasodifan yoki noto’g’ri o’zgartirishdan himoya qiladi. Bank hisobini tasavvur qiling: balansni istagan kishi to’g’ridan-to’g’ri o’zgartira olmasligi kerak.

Enkapsulatsiyama’lumotni yashirib, unga nazorat qilinadigan kirish berish tamoyili. Kotlin’da bu private va maxsus get/set orqali amalga oshiriladi.

private — yashirin a’zo

Kotlin’da a’zoni private qilib, uni tashqaridan yashirish mumkin:

class Hisob {
    private var balans = 0

    fun toldirish(summa: Int) {
        if (summa > 0) {
            balans += summa
        }
    }

    fun korish() = balans
}

fun main() {
    val h = Hisob()
    h.toldirish(1000)
    h.toldirish(-500)   // rad etiladi
    println("Balans: ${h.korish()}")
}
Balans: 1000

private var balans tashqaridan yashirin — to’g’ridan-to’g’ri o’zgartirib bo’lmaydi. toldirish metodi manfiy summani rad etdi. Ma’lumot himoyalangan.

Maxsus get va set

Kotlin xususiyatlar uchun maxsus get/set yozishga imkon beradi. Bu inkapsulatsiyani nafis qiladi:

class Talaba {
    var ball: Int = 0
        set(qiymat) {
            if (qiymat in 0..100) {   // faqat 0-100
                field = qiymat
            }
        }
}

fun main() {
    val t = Talaba()
    t.ball = 95
    t.ball = 150   // rad etiladi
    println("Ball: ${t.ball}")
}
Ball: 95

set(qiymat) bloki tekshiruv o’tkazdi — 150 diapazondan tashqari bo’lgani uchun rad etildi. field — xususiyatning ichki qiymatiga ishora qiluvchi maxsus so’z. Diqqat: t.ball = 95 oddiy maydonga o’xshaydi, ammo ortida nazorat turadi.

Kirish modifikatorlari

Kotlin kirish darajalarini jadvalda ko’ramiz:

Modifikator Ko’rinishi
public hamma joydan (standart)
private faqat sinf ichidan
protected sinf va vorislari
internal shu modul ichida

Kotlin’da standart daraja public, biroq maydonlarni ko’pincha private qilish tavsiya etiladi.

Nega enkapsulatsiya muhim?

Enkapsulatsiya uch foyda beradi: ma’lumot himoyalanadi, ichki tuzilishni o’zgartirsangiz tashqi kod buzilmaydi, va sinf bilan ishlash soddalashadi. Kotlin’da xususiyatlar va get/set bu tamoyilni nafis qiladi.

Xulosa

Bu bo’limda enkapsulatsiya tamoyilini, private bilan yashirishni, maxsus set va field ni hamda kirish modifikatorlarini ko’rib chiqdik. Enkapsulatsiya — ishonchli obyekt dizaynining poydevori. Keyingi darsda merosxo’rlikka o’tamiz.