Inkapsulyatsiya — 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.
Inkapsulyatsiya — ma’lumotni yashirib, unga nazorat qilinadigan kirish berish tamoyili. Dart’da xususiy (private) a’zolar
_(pastki chiziq) bilan belgilanadi.
Dart’da private — pastki chiziq
Dart’da a’zoni xususiy (private) qilish uchun uning nomi _ bilan boshlanadi. Bunday a’zo faqat o’z fayli ichida ko’rinadi:
class Hisob {
int _balans = 0; // _ bilan — xususiy
void toldirish(int summa) {
if (summa > 0) {
_balans += summa;
}
}
int korish() => _balans;
}
void main() {
var h = Hisob();
h.toldirish(1000);
h.toldirish(-500); // rad etiladi
print("Balans: ${h.korish()}");
}
Balans: 1000
_balans _ bilan boshlangani uchun xususiy — tashqaridan to’g’ridan-to’g’ri o’zgartirib bo’lmaydi. toldirish metodi manfiy summani rad etdi. Ma’lumot himoyalangan.
Nega himoya kerak?
Agar maydon ochiq bo’lsa, uni istalgan qiymatga o’zgartirib bo’ladi — hatto mantiqan noto’g’risiga:
| Yondashuv | Balansga kirish | Xavf |
|---|---|---|
| Ochiq maydon | to’g’ridan-to’g’ri | manfiy qiymat kirishi mumkin |
Xususiy (_) + metod |
faqat tekshiruvli metod orqali | himoyalangan |
Inkapsulyatsiya ma’lumotni faqat to’g’ri yo’l bilan o’zgartirishga majbur qiladi.
Metod orqali nazorat
Xususiy maydonga kirish metodlar orqali nazorat qilinadi. Metod ichida tekshiruv qo’yish mumkin:
class Talaba {
int _ball = 0;
void ballOrnat(int b) {
if (b >= 0 && b <= 100) { // faqat 0-100
_ball = b;
}
}
int ballOlish() => _ball;
}
void main() {
var t = Talaba();
t.ballOrnat(95);
t.ballOrnat(150); // rad etiladi
print("Ball: ${t.ballOlish()}");
}
Ball: 95
ballOrnat faqat 0-100 oralig’idagi qiymatni qabul qildi, 150 ni rad etdi. Bu ma’lumot yaxlitligini ta’minlaydi.
Nega inkapsulyatsiya muhim?
Inkapsulyatsiya uch foyda beradi: ma’lumot himoyalanadi, ichki tuzilishni o’zgartirsangiz tashqi kod buzilmaydi, va sinf bilan ishlash soddalashadi. Dart’da _ bilan bu tamoyil sodda va tabiiy amalga oshiriladi.
Xulosa
Bu bo’limda inkapsulyatsiya tamoyilini, Dart’da _ bilan xususiy a’zolarni va metod orqali nazoratni ko’rib chiqdik. Inkapsulyatsiya — ishonchli obyekt dizaynining poydevori. Keyingi darsda konstruktor va destruktorga o’tamiz.