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.
Tantangan
MudahMari 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
Connectabledengan methodconnect()yang mencetakConnecting to network... - Class
Chargeabledengan methodcharge()yang mencetakCharging battery... - Class
Displayabledengan methodshowScreen(String content)yang mencetakDisplaying: [content] - Class
Tabletyang mengimplementasikan ketiga interface:Connectable,Chargeable, danDisplayable. Tambahkan propertyString branddengan constructor. Implementasimu harus mencetak[brand] tablet connecting to WiFiuntuk connect,[brand] tablet charging via USB-Cuntuk charge, dan[brand] screen: [content]untuk showScreen
- Class
main.dart: Impor file devices-mu dan tunjukkan cara Tablet memenuhi kontrak ketiga interface:- Buat
Tabletdengan brand'Galaxy' - Panggil
connect() - Panggil
charge() - Panggil
showScreen('Welcome Home')
- Buat
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 HomeCoba sendiri
import 'devices.dart';
void main() {
// TODO: Buat Tablet dengan merek 'Galaxy'
// TODO: Panggil connect()
// TODO: Panggil charge()
// TODO: Panggil showScreen('Welcome Home')
}
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