Menu
Coddy logo textTech

Resumen - Almacenamiento genérico

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy — lección 69 de 110.

challenge icon

Desafío

Fácil

¡Vamos a construir un sistema de almacenamiento genérico que combine todo lo que has aprendido sobre colecciones y genéricos! Crearás una clase Storage<T> que pueda almacenar elementos de cualquier tipo, recuperarlos y ser iterada usando un bucle for-in.

Organizarás tu código en dos archivos:

  • storage.dart: Crea tu sistema de almacenamiento genérico con dos clases:
    • Una clase StorageIterator<T> que implemente Iterator<T> para permitir la iteración sobre los elementos almacenados
    • Una clase Storage<T> que extienda Iterable<T> con las siguientes capacidades:
      • Una lista privada para contener los elementos internamente
      • Un método add(T item) para almacenar un nuevo elemento
      • Un método getAt(int index) que devuelva el elemento en el índice dado
      • Un getter count que devuelva el número de elementos almacenados
      • Un getter iterator que devuelva un StorageIterator para los elementos almacenados
  • main.dart: Importa tu archivo de almacenamiento y demuestra el almacenamiento genérico con diferentes tipos:
    • Crea un Storage<String> y añade tres nombres de ciudades: 'Paris', 'Tokyo', 'Sydney'
    • Imprime el conteo de elementos
    • Imprime el elemento en el índice 1
    • Usa un bucle for-in para imprimir cada ciudad en su propia línea
    • Imprime una línea vacía
    • Crea un Storage<int> y añade cuatro números: 100, 200, 300, 400
    • Usa el método where para filtrar valores mayores a 150, luego imprime la lista resultante

Tu sistema de almacenamiento debería funcionar sin problemas con cualquier tipo manteniendo total seguridad de tipos. ¡Debido a que extiende Iterable, obtiene automáticamente acceso a métodos potentes como where, map y fold!

Salida esperada:

Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney

[200, 300, 400]

Pruébalo tú mismo

import 'storage.dart';

void main() {
  // TODO: Crear un Storage<String> para ciudades
  // Añadir tres ciudades: 'Paris', 'Tokyo', 'Sydney'

  // TODO: Imprimir el recuento de elementos (formato: "Count: X")

  // TODO: Imprimir el elemento en el índice 1 (formato: "Item at 1: X")

  // TODO: Usar un bucle for-in para imprimir cada ciudad en su propia línea

  // TODO: Imprimir una línea vacía
  print('');

  // TODO: Crear un Storage<int> para números
  // Añadir cuatro números: 100, 200, 300, 400

  // TODO: Usar el método where para filtrar valores mayores que 150
  // Luego imprimir la lista resultante usando toList()
}

Todas las lecciones de Programación Orientada a Objetos