Darsliklar Dart Inkapsulyatsiya

Dart Dart Inkapsulyatsiya

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.

Inkapsulyatsiyama’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.