Menu
CoddyTech

Rangkuman: Pengambil Data

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

challenge icon

Tantangan

Mudah

Mari 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 class DataFetcher yang menyimulasikan pengambilan data dari sumber jarak jauh. Class-mu harus memiliki:
    • Field String final bernama source yang menyimpan asal data
    • Konstruktor privat yang menginisialisasi sumber
    • Method factory asinkron statis connect(String sourceName) yang mengembalikan Future<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 mengembalikan Future<String>. Simulasikan jeda selama 50 milidetik, lalu kembalikan string dengan format: [source]-Item-[id]
    • Method generator stream fetchMultiple(int count) yang mengembalikan Stream<String>. Method ini harus menghasilkan item dengan ID mulai dari 1 hingga dan termasuk count, menggunakan method fetchItem-mu untuk setiap item. Tunggu setiap pengambilan selesai sebelum menghasilkan item
  • 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 for untuk melakukan iterasi melalui fetchMultiple(3) dan mencetak setiap item
    • Cetak baris kosong
    • Cetak All operations complete!

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

Latihan sendiri: Compiler Dart online