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.