Menu
CoddyTech

Beberapa Antarmuka

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 48 dari 110.

Salah satu keunggulan terbesar interface dibandingkan pewarisan adalah sebuah class dapat mengimplementasikan beberapa interface. Dart membatasi kamu untuk hanya mewarisi satu class, tetapi kamu dapat mengimplementasikan sebanyak mungkin interface yang kamu perlukan.

abstract class Printable {
  void printContent();
}

abstract class Saveable {
  void save();
}

abstract class Shareable {
  void share(String recipient);
}

class Document implements Printable, Saveable, Shareable {
  String content;
  
  Document(this.content);
  
  @override
  void printContent() {
    print('Printing: $content');
  }
  
  @override
  void save() {
    print('Saving document...');
  }
  
  @override
  void share(String recipient) {
    print('Sharing with $recipient');
  }
}

Saat mengimplementasikan beberapa interface, kamu harus menyediakan implementasi untuk semua method dari setiap interface. class tersebut harus memenuhi semua kontrak yang dijanjikan untuk didukungnya.

Kamu juga dapat menggabungkan extends dengan beberapa implements:

class Report extends Document implements Printable, Shareable {
  Report(String content) : super(content);
  
  // Tetap harus mengimplementasikan semua method interface
  // (dalam kasus ini, sudah diwarisi dari Document)
}

Fleksibilitas ini memungkinkan kamu merancang class yang sesuai untuk berbagai peran. SmartPhone dapat mengimplementasikan interface Camera, Phone, dan MusicPlayer, yang menjamin perangkat tersebut dapat melakukan semua yang diwajibkan oleh setiap interface sambil tetap mempertahankan implementasi uniknya sendiri.

challenge icon

Tantangan

Mudah

Mari kita buat sistem perangkat pintar yang menunjukkan cara satu class dapat mengimplementasikan beberapa interface untuk menggabungkan berbagai kemampuan. Kamu akan membuat class interface terpisah untuk fitur perangkat yang berbeda, lalu membuat perangkat yang dapat melakukan semuanya.

Kamu akan mengatur kodemu ke dalam dua file:

  • devices.dart: Definisikan interface dan class yang mengimplementasikannya di sini:
    • Class Connectable dengan method connect() yang mencetak Connecting to network...
    • Class Chargeable dengan method charge() yang mencetak Charging battery...
    • Class Displayable dengan method showScreen(String content) yang mencetak Displaying: [content]
    • Class Tablet yang mengimplementasikan ketiga interface: Connectable, Chargeable, dan Displayable. Tambahkan property String brand dengan constructor. Implementasimu harus mencetak [brand] tablet connecting to WiFi untuk connect, [brand] tablet charging via USB-C untuk charge, dan [brand] screen: [content] untuk showScreen
  • main.dart: Impor file devices-mu dan tunjukkan cara Tablet memenuhi kontrak ketiga interface:
    • Buat Tablet dengan brand 'Galaxy'
    • Panggil connect()
    • Panggil charge()
    • Panggil showScreen('Welcome Home')

Class Tablet-mu harus menyediakan implementasinya sendiri untuk setiap method dari ketiga interface. Ini menunjukkan bahwa mengimplementasikan beberapa interface memungkinkan satu class menjanjikan beberapa kemampuan sekaligus, sambil menjaga agar setiap implementasi tetap unik untuk perangkat tersebut.

Output yang diharapkan:

Galaxy tablet connecting to WiFi
Galaxy tablet charging via USB-C
Galaxy screen: Welcome Home

Coba sendiri

import 'devices.dart';

void main() {
  // TODO: Buat Tablet dengan merek 'Galaxy'
  
  // TODO: Panggil connect()
  
  // TODO: Panggil charge()
  
  // TODO: Panggil showScreen('Welcome Home')
  
}
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