Darsliklar Dart Mixins

Dart Dart Mixins

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.

Mixinmixin kalit so’zi bilan e’lon qilinadigan, metod va maydonlar to’plami. U with orqali 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.