Menu
Coddy logo textTech

Riepilogo - Archiviazione generica

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 69 di 110.

challenge icon

Sfida

Facile

Costruiamo un sistema di archiviazione generico che combina tutto ciò che hai imparato sulle collezioni e sui tipi generici! Creerai una classe Storage<T> in grado di archiviare elementi di qualsiasi tipo, recuperarli e iterarli usando un ciclo for-in.

Organizzerai il codice in due file:

  • storage.dart: crea il tuo sistema di archiviazione generico con due classi:
    • Una classe StorageIterator<T> che implementa Iterator<T> per consentire l'iterazione sugli elementi archiviati
    • Una classe Storage<T> che estende Iterable<T> con le seguenti funzionalità:
      • Una lista privata per contenere gli elementi internamente
      • Un metodo add(T item) per archiviare un nuovo elemento
      • Un metodo getAt(int index) che restituisce l'elemento all'indice specificato
      • Un getter count che restituisce il numero di elementi archiviati
      • Un getter iterator che restituisce uno StorageIterator per gli elementi archiviati
  • main.dart: importa il file di archiviazione e mostra il sistema di archiviazione generico con tipi diversi:
    • Crea uno Storage<String> e aggiungi tre nomi di città: 'Paris', 'Tokyo', 'Sydney'
    • Stampa il numero di elementi
    • Stampa l'elemento all'indice 1
    • Usa un ciclo for-in per stampare ogni città su una riga separata
    • Stampa una riga vuota
    • Crea uno Storage<int> e aggiungi quattro numeri: 100, 200, 300, 400
    • Usa il metodo where per filtrare i valori maggiori di 150, poi stampa la lista risultante

Il tuo sistema di archiviazione dovrebbe funzionare senza problemi con qualsiasi tipo, mantenendo la sicurezza dei tipi. Poiché estende Iterable, ottiene automaticamente l'accesso a metodi potenti come where, map e fold!

Output previsto:

Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney

[200, 300, 400]

Provalo tu

import 'storage.dart';

void main() {
  // TODO: Crea uno Storage<String> per le città
  // Aggiungi tre città: 'Paris', 'Tokyo', 'Sydney'

  // TODO: Stampa il numero di elementi (formato: "Count: X")

  // TODO: Stampa l'elemento all'indice 1 (formato: "Item at 1: X")

  // TODO: Usa un ciclo for-in per stampare ogni città su una riga separata

  // TODO: Stampa una riga vuota
  print('');

  // TODO: Crea uno Storage<int> per i numeri
  // Aggiungi quattro numeri: 100, 200, 300, 400

  // TODO: Usa il metodo where per filtrare i valori maggiori di 150
  // Quindi stampa la lista risultante usando toList()
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online