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.

Konstruktorobyekt 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.