Menggunakan Beberapa Mixin
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 52 dari 110.
Sama seperti kamu bisa mengimplementasikan beberapa interface, kamu juga bisa menerapkan beberapa mixin ke satu class. Cukup cantumkan mixin tersebut setelah kata kunci with, pisahkan dengan koma.
mixin Swimming {
void swim() => print('Swimming');
}
mixin Flying {
void fly() => print('Flying');
}
mixin Walking {
void walk() => print('Walking');
}
class Duck with Swimming, Flying, Walking {
void quack() => print('Quack!');
}
void main() {
var duck = Duck();
duck.swim(); // Dari mixin Swimming
duck.fly(); // Dari mixin Flying
duck.walk(); // Dari mixin Walking
duck.quack(); // Dari class Duck
}Urutan mixin penting ketika mixin tersebut memiliki method dengan nama yang sama. Mixin terakhir dalam daftar yang digunakan:
mixin A {
void greet() => print('Hello from A');
}
mixin B {
void greet() => print('Hello from B');
}
class MyClass with A, B {}
void main() {
MyClass().greet(); // output: Hello from B
}Karena B muncul setelah A, method greet() miliknya lebih diutamakan. Perilaku pelapisan ini memungkinkan kamu menyusun class dengan kemampuan yang tepat sesuai kebutuhan, dengan menggabungkan fungsionalitas dari berbagai sumber tanpa hierarki pewarisan yang rumit.
Tantangan
MudahMari buat sistem perangkat rumah pintar yang menggabungkan berbagai kemampuan melalui mixin. Kamu akan membuat beberapa mixin yang mewakili berbagai fitur pintar, lalu membuat perangkat yang menggunakan semuanya sekaligus.
Kamu akan menyusun kodemu ke dalam dua file:
smart_features.dart: Definisikan tiga mixin yang menyediakan berbagai kemampuan rumah pintar:- Mixin
VoiceControldengan methodvoiceCommand(String command)yang mencetakVoice: [command] - Mixin
WiFiEnableddengan methodconnectWiFi(String network)yang mencetakConnected to [network] - Mixin
PowerSaverdengan methodenterSleepMode()yang mencetakEntering sleep mode...dan methodwakeUp()yang mencetakWaking up!
SmartSpeakeryang menggunakan ketiga mixin tersebut. Tambahkan propertyString namebeserta konstruktor, dan sertakan methodplayMusic(String song)yang mencetak[name] playing: [song]- Mixin
main.dart: Impor file fitur pintar kamu dan tunjukkan cara speaker menggabungkan semua kemampuannya:- Buat
SmartSpeakerbernama'Echo' - Panggil
connectWiFi('HomeNetwork') - Panggil
voiceCommand('Play jazz') - Panggil
playMusic('Smooth Jazz Mix') - Panggil
enterSleepMode() - Panggil
wakeUp()
- Buat
SmartSpeaker mendapatkan method dari ketiga mixin dengan satu klausa with. Ini menunjukkan bagaimana beberapa mixin memungkinkanmu menyusun kemampuan yang benar-benar kamu butuhkan tanpa pewarisan yang rumit.
Output yang diharapkan:
Connected to HomeNetwork
Voice: Play jazz
Echo playing: Smooth Jazz Mix
Entering sleep mode...
Waking up!Coba sendiri
import 'smart_features.dart';
void main() {
// TODO: Buat SmartSpeaker bernama 'Echo'
// TODO: Panggil connectWiFi('HomeNetwork')
// TODO: Panggil voiceCommand('Play jazz')
// TODO: Panggil playMusic('Smooth Jazz Mix')
// TODO: Panggil enterSleepMode()
// TODO: Panggil wakeUp()
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online