Özet - Mixin'ler
- Dart kursu
- Orta seviye
- Ders 29/116
- 5 dk
mixin, with ve on'u birleştirerek bir yetenek sistemi yazarsın.
Özet - Mixin'ler
Bu grupta mixin'lerin tüm araçlarını gördün: mixin, with, on, çoklu mixin ve mixin vs inheritance. Şimdi bunları bir yetenek sisteminde birleştireceğiz.
Bir yetenek sistemi, farklı sınıflara yeniden kullanılabilir davranışlar ekler. Örneğin bir Bird sınıfı hem Flyer hem Walker mixin'ini uygular; her iki yeteneği de örnek üzerinden çağrılabilir. İkinci adımda yeni bir yetenek daha ekleyip Duck sınıfını üç mixin ile donatacağız. Bu, mixin'lerin gücünü tek bir örnekte gösterir.
Uygulama Bird sınıfına iki yetenek ekle
Flyer ve Walker adında iki mixin tanımla. Flyer içinde void fly() { print('Uçuyor'); }, Walker içinde void walk() { print('Yürüyor'); } metotlarını ekle. Bird adında bir sınıf yaz: class Bird with Flyer, Walker { Bird(); }. main içinde var b = Bird(); ile örnek oluştur ve b.fly() ile b.walk() çağrılarını yap.
Başlangıç kodu
// Flyer ve Walker mixin'lerini tanımla
// Bird sınıfını iki mixin ile uygula
void main() {
// Bird örneği oluştur ve fly() ile walk() çağır
}Örnek çözüm
// Flyer ve Walker mixin'lerini tanımla
mixin Flyer {
void fly() {
print('Uçuyor');
}
}
mixin Walker {
void walk() {
print('Yürüyor');
}
}
class Bird with Flyer, Walker {
Bird();
}
void main() {
var b = Bird();
b.fly();
b.walk();
}Beklenen çıktı
Uçuyor Yürüyor
Üçüncü yetenek: Swimmer
İkinci adımda yetenek sistemine üçüncü bir mixin ekleyeceğiz: Swimmer. Duck sınıfı üç mixin'i bir arada uygulayarak uçan, yürüyen ve yüzen bir yetenek setine sahip olacak.
Örnek: class Duck with Flyer, Walker, Swimmer { Duck(); }. Üç mixin virgülle ayrılır. Duck örneği fly(), walk() ve swim() metotlarının üçünü de çağırabilir. Bu, mixin'lerin gerçek gücünü gösterir: yetenekler tek tek tanımlanır, sınıfa bir arada uygulanır; kalıtım ağacı genişlemeden davranış çoğalır.
Uygulama Duck'a üçüncü mixin ekle
Var olan Flyer ve Walker mixin'lerini koru. Swimmer adında üçüncü bir mixin ekle; void swim() { print('Yüzüyor'); } metodunu yaz. Duck adında bir sınıf tanımla: class Duck with Flyer, Walker, Swimmer { Duck(); }. main içinde var d = Duck(); ile örnek oluştur ve d.fly(), d.walk() ve d.swim() çağrılarını yap.
Başlangıç kodu
mixin Flyer {
void fly() {
print('Uçuyor');
}
}
mixin Walker {
void walk() {
print('Yürüyor');
}
}
// Swimmer mixin'ini ekle ve Duck sınıfını üç mixin ile yaz
void main() {
// Duck örneği oluştur ve fly, walk, swim çağır
}Örnek çözüm
mixin Flyer {
void fly() {
print('Uçuyor');
}
}
mixin Walker {
void walk() {
print('Yürüyor');
}
}
mixin Swimmer {
void swim() {
print('Yüzüyor');
}
}
class Duck with Flyer, Walker, Swimmer {
Duck();
}
void main() {
var d = Duck();
d.fly();
d.walk();
d.swim();
}Beklenen çıktı
Uçuyor Yürüyor Yüzüyor
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir yetenek sistemi için hangisi doğrudur?
- Her yetenek için ayrı bir üst sınıf yazılır
- Her yetenek için mixin yazılır; sınıflara with ile uygulanır Doğru cevap
- Yetenekler yalnızca static alanlarla eklenir
- Yetenekler yapıcı içine yazılır
Açıklama: Mixin + with, yetenek sisteminin temelidir.