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.
Enkapsulatsiya — ma’lumotni yashirib, unga nazorat qilinadigan kirish berish tamoyili. Kotlin’da bu
privateva maxsusget/setorqali 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.