Mixinlar (mixins) — bir necha sinfga umumiy funksionallikni vorislik yaratmasdan qo’shish usuli. Dart’da bir sinf faqat bitta ota sinfdan meros oladi, ammo mixin orqali ko’plab qo’shimcha xususiyatlarni “aralashtirish” mumkin. Bu kodni qayta ishlatishning moslashuvchan vositasidir.
Mixin —
mixinkalit so’zi bilan e’lon qilinadigan, metod va maydonlar to’plami. Uwithorqali sinfga qo’shiladi, vorislik esa yaratmaydi.
Mixin e’lon qilish
Mixin mixin bilan e’lon qilinadi va with bilan sinfga qo’shiladi:
mixin Salomlashuvchi {
void salomBer() {
print("Salom, UzbekDevs!");
}
}
class Foydalanuvchi with Salomlashuvchi {
String ism = "";
}
void main() {
var u = Foydalanuvchi();
u.ism = "Farrux";
u.salomBer(); // mixin metodini ishlatadi
}
Salom, UzbekDevs!
mixin Salomlashuvchi — qo’shimcha funksionallik, class Foydalanuvchi with Salomlashuvchi esa uni “aralashtirdi”. Endi Foydalanuvchi salomBer() metodiga ega, garchi u undan meros olmagan bo’lsa ham.
Bir necha mixin
Bir sinfga bir necha mixin qo’shish mumkin — bu vorislikda imkonsiz edi:
mixin Yuruvchi {
void yur() => print("Yuryapman");
}
mixin Suzuvchi {
void suz() => print("Suzyapman");
}
class Ordak with Yuruvchi, Suzuvchi {}
void main() {
var o = Ordak();
o.yur();
o.suz();
}
Yuryapman
Suzyapman
Ordak ikki mixindan — Yuruvchi va Suzuvchi dan — xususiyat oldi. with dan keyin ular vergul bilan sanaladi. Bu “ko’p merosxo’rlik” muammosini xavfsiz hal qiladi.
Mixin va vorislik farqi
Ikki yondashuvni jadvalda solishtiramiz:
| Xususiyat | Vorislik (extends) |
Mixin (with) |
|---|---|---|
| Nechta bo’lishi mumkin | bitta ota | bir nechta |
| Munosabat | “bu — turi” | “bu qobiliyatga ega” |
| Kalit so’z | extends |
with |
Vorislik “Talaba — bu Inson” munosabatini, mixin esa “Ordak yura va suza oladi” qobiliyatini ifodalaydi.
Qachon ishlatiladi?
Mixin bir necha turli sinfga umumiy qobiliyat kerak bo’lganda ishlatiladi. Masalan, turli sinflar (Foydalanuvchi, Mahsulot) “loglash” qobiliyatiga ega bo’lishi kerak, ammo ular bir-biriga aloqador emas. Mixin bu funksionallikni vorislik iyerarxiyasini buzmasdan qo’shadi. Bu Flutter va katta loyihalarda keng qo’llaniladi.
Xulosa
Bu bo’limda mixin (mixin, with), bir necha mixinni qo’shish va uning vorislikdan farqini ko’rib chiqdik. Mixinlar kodni qayta ishlatishning moslashuvchan usulidir. Keyingi darsda late va kechiktirilgan ishga tushirishga o’tamiz.