Darsliklar Dart Konstruktor va destruktor

Dart Dart Konstruktor va destruktor

Konstruktor va destruktor — obyektning “hayoti”ni boshqaruvchi maxsus metodlar. Konstruktor obyekt yaratilganda uni sozlaydi, destruktor esa yo’q qilinishidan oldin tozalash ishlarini bajaradi. Dart’da konstruktorlar ayniqsa qulay va ixcham sintaksisga ega.

Konstruktor — obyekt yaratilganda avtomatik ishlaydigan, uni sozlaydigan maxsus metod. Dart’da destruktor o’rniga avtomatik xotira boshqaruvi (garbage collector) ishlaydi.

Oddiy konstruktor

Konstruktor sinf nomi bilan bir xil ataladi va maydonlarni sozlaydi:

class Mahsulot {
  String nomi;
  int narxi;

  Mahsulot(String nomi, int narxi)
      : this.nomi = nomi,
        this.narxi = narxi;
}

void main() {
  var telefon = Mahsulot("iPhone", 12000000);
  print("${telefon.nomi} — ${telefon.narxi}");
}
iPhone — 12000000

Obyekt yaratishning o’zidayoq (Mahsulot("iPhone", 12000000)) unga qiymat berdik. Konstruktor bu qiymatlarni maydonlarga joyladi.

Dart’ning qisqa sintaksisi

Dart konstruktorni yozishning juda ixcham usulini beradi — this.maydon to’g’ridan-to’g’ri parametr sifatida:

class Mahsulot {
  String nomi;
  int narxi;

  Mahsulot(this.nomi, this.narxi);   // qisqa shakl
}

void main() {
  var t = Mahsulot("Noutbuk", 8500000);
  print("${t.nomi} — ${t.narxi}");
}
Noutbuk — 8500000

Mahsulot(this.nomi, this.narxi) — yuqoridagi uzun kod bilan bir xil ishlaydi, ammo ancha qisqa. Bu Dart’ning eng sevimli qulayliklaridan biri.

Nomlangan konstruktor

Dart bir sinfda bir necha konstruktor yaratishga imkon beradi — ular nom bilan ajratiladi:

class Foydalanuvchi {
  String ism;

  Foydalanuvchi(this.ism);                    // asosiy
  Foydalanuvchi.mehmon() : ism = "mehmon";    // nomlangan
}

void main() {
  var a = Foydalanuvchi("Farrux");
  var b = Foydalanuvchi.mehmon();
  print(a.ism);
  print(b.ism);
}
Farrux
mehmon

Foydalanuvchi.mehmon() — nomlangan konstruktor. Bu obyektni turli usulda yaratishga imkon beradi. Bu Dart’ga xos qulay imkoniyat.

Destruktor haqida

Dart’da C++’dagi kabi aniq destruktor yo’q — chunki xotira garbage collector tomonidan avtomatik boshqariladi. Kerak bo’lmay qolgan obyektlar avtomatik tozalanadi. Agar maxsus tozalash kerak bo’lsa (masalan, fayl yopish), buni dispose() kabi metodlar orqali qo’lda bajariladi — bu ayniqsa Flutter’da uchraydi.

Xulosa

Bu bo’limda konstruktor, Dart’ning qisqa this.maydon sintaksisi, nomlangan konstruktorlar va destruktor o’rniga garbage collector’ni ko’rib chiqdik. Konstruktor — obyektni tug’ilishida sozlaydi. Keyingi darsda get va set — qabul qiluvchi va o’rnatuvchilarga o’tamiz.