Menu
CoddyTech

Ulasan: Penyimpanan Generik

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

challenge icon

Tantangan

Mudah

Mari buat sistem penyimpanan generik yang menggabungkan semua yang telah kamu pelajari tentang koleksi dan generik! Kamu akan membuat class Storage<T> yang dapat menyimpan item dengan tipe apa pun, mengambilnya, dan diiterasi menggunakan perulangan for-in.

Kamu akan mengatur kodemu ke dalam dua file:

  • storage.dart: Buat sistem penyimpanan generikmu dengan dua class:
    • Class StorageIterator<T> yang mengimplementasikan Iterator<T> untuk memungkinkan iterasi atas item yang disimpan
    • Class Storage<T> yang memperluas Iterable<T> dengan kemampuan berikut:
      • list privat untuk menyimpan item secara internal
      • method add(T item) untuk menyimpan item baru
      • method getAt(int index) yang mengembalikan item pada indeks yang diberikan
      • getter count yang mengembalikan jumlah item yang disimpan
      • getter iterator yang mengembalikan StorageIterator untuk item yang disimpan
  • main.dart: Impor file penyimpananmu dan tunjukkan penggunaan penyimpanan generik dengan tipe yang berbeda:
    • Buat Storage<String> dan tambahkan tiga nama kota: 'Paris', 'Tokyo', 'Sydney'
    • Cetak jumlah item
    • Cetak item pada indeks 1
    • Gunakan perulangan for-in untuk mencetak setiap kota pada barisnya sendiri
    • Cetak satu baris kosong
    • Buat Storage<int> dan tambahkan empat angka: 100, 200, 300, 400
    • Gunakan method where untuk memfilter nilai yang lebih besar dari 150, lalu cetak list hasilnya

Sistem penyimpananmu seharusnya dapat bekerja dengan lancar dengan tipe apa pun sambil tetap menjaga keamanan tipe sepenuhnya. Karena sistem ini memperluas Iterable, sistem ini otomatis mendapatkan akses ke method yang andal seperti where, map, dan fold!

Output yang diharapkan:

Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney

[200, 300, 400]

Coba sendiri

import 'storage.dart';

void main() {
  // TODO: Buat Storage<String> untuk menyimpan kota
  // Tambahkan tiga kota: 'Paris', 'Tokyo', 'Sydney'

  // TODO: Cetak jumlah item (format: "Count: X")

  // TODO: Cetak item pada indeks 1 (format: "Item at 1: X")

  // TODO: Gunakan loop for-in untuk mencetak setiap kota pada baris tersendiri

  // TODO: Cetak baris kosong
  print('');

  // TODO: Buat Storage<int> untuk menyimpan angka
  // Tambahkan empat angka: 100, 200, 300, 400

  // TODO: Gunakan method where untuk menyaring nilai yang lebih besar dari 150
  // Lalu cetak list hasilnya menggunakan toList()
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online