Menu
Coddy logo textTech

Zusammenfassung – Generische Speicherung

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy — Lektion 69 von 110.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein generisches Speichersystem bauen, das alles kombiniert, was Sie über Collections und Generics gelernt haben! Sie werden eine Storage<T>-Klasse erstellen, die Elemente eines beliebigen Typs speichern, abrufen und mit einer for-in-Schleife iteriert werden kann.

Sie werden Ihren Code in zwei Dateien organisieren:

  • storage.dart: Erstellen Sie Ihr generisches Speichersystem mit zwei Klassen:
    • Eine StorageIterator<T>-Klasse, die Iterator<T> implementiert, um die Iteration über gespeicherte Elemente zu ermöglichen
    • Eine Storage<T>-Klasse, die Iterable<T> erweitert und über die folgenden Funktionen verfügt:
      • Eine private Liste, um Elemente intern zu halten
      • Eine add(T item)-Methode, um ein neues Element zu speichern
      • Eine getAt(int index)-Methode, die das Element am angegebenen Index zurückgibt
      • Ein count-Getter, der die Anzahl der gespeicherten Elemente zurückgibt
      • Ein iterator-Getter, der einen StorageIterator für die gespeicherten Elemente zurückgibt
  • main.dart: Importieren Sie Ihre Storage-Datei und demonstrieren Sie den generischen Speicher mit verschiedenen Typen:
    • Erstellen Sie ein Storage<String> und fügen Sie drei Städtenamen hinzu: 'Paris', 'Tokyo', 'Sydney'
    • Geben Sie die Anzahl der Elemente aus
    • Geben Sie das Element an Index 1 aus
    • Verwenden Sie eine for-in-Schleife, um jede Stadt in einer eigenen Zeile auszugeben
    • Geben Sie eine Leerzeile aus
    • Erstellen Sie ein Storage<int> und fügen Sie vier Zahlen hinzu: 100, 200, 300, 400
    • Verwenden Sie die where-Methode, um Werte größer als 150 zu filtern, und geben Sie dann die resultierende Liste aus

Ihr Speichersystem sollte nahtlos mit jedem Typ funktionieren und dabei die volle Typsicherheit gewährleisten. Da es Iterable erweitert, erhält es automatisch Zugriff auf leistungsstarke Methoden wie where, map und fold!

Erwartete Ausgabe:

Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney

[200, 300, 400]

Probier es selbst

import 'storage.dart';

void main() {
  // TODO: Erstelle einen Storage<String> für Städte
  // Füge drei Städte hinzu: 'Paris', 'Tokyo', 'Sydney'

  // TODO: Gib die Anzahl der Elemente aus (Format: "Count: X")

  // TODO: Gib das Element an Index 1 aus (Format: "Item at 1: X")

  // TODO: Verwende eine for-in-Schleife, um jede Stadt in einer eigenen Zeile auszugeben

  // TODO: Gib eine Leerzeile aus
  print('');

  // TODO: Erstelle einen Storage<int> für Zahlen
  // Füge vier Zahlen hinzu: 100, 200, 300, 400

  // TODO: Verwende die where-Methode, um Werte größer als 150 zu filtern
  // Gib dann die resultierende Liste mit toList() aus
}

Alle Lektionen in Objektorientierte Programmierung