Rangkuman: Pengambil Data
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 81 dari 110.
Tantangan
MudahMari buat class DataFetcher yang menggabungkan semua konsep OOP asinkron dari bab ini! Kamu akan membuat layanan data yang menggunakan inisialisasi asinkron, method asinkron untuk mengambil item satu per satu, dan stream untuk mengirimkan beberapa hasil seiring waktu.
Kamu akan menyusun kodemu ke dalam dua file:
data_fetcher.dart: Buat classDataFetcheryang menyimulasikan pengambilan data dari sumber jarak jauh. Class-mu harus memiliki:- Field
Stringfinal bernamasourceyang menyimpan asal data - Konstruktor privat yang menginisialisasi sumber
- Method factory asinkron statis
connect(String sourceName)yang mengembalikanFuture<DataFetcher>. Simulasikan jeda koneksi selama 100 milidetik, lalu kembalikan instance baru dengan sumber yang diatur ke nama yang diberikan - Method asinkron
fetchItem(int id)yang mengembalikanFuture<String>. Simulasikan jeda selama 50 milidetik, lalu kembalikan string dengan format:[source]-Item-[id] - Method generator stream
fetchMultiple(int count)yang mengembalikanStream<String>. Method ini harus menghasilkan item dengan ID mulai dari 1 hingga dan termasukcount, menggunakan methodfetchItem-mu untuk setiap item. Tunggu setiap pengambilan selesai sebelum menghasilkan item
- Field
main.dart: Impor data fetcher-mu dan tunjukkan ketiga pola asinkron bekerja bersama:- Cetak
Connecting to data source... - Gunakan factory asinkron untuk terhubung ke sumber bernama
CloudDB - Cetak
Connected to [source]menggunakan field source milik fetcher - Cetak baris kosong
- Cetak
Fetching single item: - Ambil dan cetak item dengan ID
42 - Cetak baris kosong
- Cetak
Fetching multiple items: - Gunakan
await foruntuk melakukan iterasi melaluifetchMultiple(3)dan mencetak setiap item - Cetak baris kosong
- Cetak
All operations complete!
- Cetak
Tantangan ini menggabungkan pola factory async statis untuk inisialisasi, method async biasa untuk operasi tunggal, dan async* dengan yield untuk mengalirkan beberapa hasil. Perhatikan bagaimana method stream dapat memanggil method async lainnya dari dalam!
Output yang diharapkan:
Connecting to data source...
Connected to CloudDB
Fetching single item:
CloudDB-Item-42
Fetching multiple items:
CloudDB-Item-1
CloudDB-Item-2
CloudDB-Item-3
All operations complete!Coba sendiri
import 'data_fetcher.dart';
void main() async {
// TODO: Cetak 'Connecting to data source...'
// TODO: Gunakan factory async untuk terhubung ke sumber bernama 'CloudDB'
// TODO: Cetak 'Connected to [source]' menggunakan field source milik fetcher
// TODO: Cetak baris kosong
// TODO: Cetak 'Fetching single item:'
// TODO: Ambil dan cetak item dengan ID 42
// TODO: Cetak baris kosong
// TODO: Cetak 'Fetching multiple items:'
// TODO: Gunakan 'await for' untuk mengiterasi fetchMultiple(3) dan cetak setiap item
// TODO: Cetak baris kosong
// TODO: Cetak 'All operations complete!'
}
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 Pembayaran12OOP Asinkron
Futures & async/awaitDasar-Dasar StreamPengontrol StreamKonstruktor AsinkronAsync dalam Method ClassRangkuman: Pengambil DataLatihan sendiri: Compiler Dart online