Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Mari 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 VoiceControl dengan method voiceCommand(String command) yang mencetak Voice: [command]
    • Mixin WiFiEnabled dengan method connectWiFi(String network) yang mencetak Connected to [network]
    • Mixin PowerSaver dengan method enterSleepMode() yang mencetak Entering sleep mode... dan method wakeUp() yang mencetak Waking up!
    Lalu buat class SmartSpeaker yang menggunakan ketiga mixin tersebut. Tambahkan property String name beserta konstruktor, dan sertakan method playMusic(String song) yang mencetak [name] playing: [song]
  • main.dart: Impor file fitur pintar kamu dan tunjukkan cara speaker menggabungkan semua kemampuannya:
    • Buat SmartSpeaker bernama 'Echo'
    • Panggil connectWiFi('HomeNetwork')
    • Panggil voiceCommand('Play jazz')
    • Panggil playMusic('Smooth Jazz Mix')
    • Panggil enterSleepMode()
    • Panggil wakeUp()

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()
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online