Menu
Coddy logo textTech

Recapitulação - Armazenamento Genérico

Parte da seção Programação Orientada a Objetos do Journey de Dart da Coddy — lição 69 de 110.

challenge icon

Desafio

Fácil

Vamos construir um sistema de armazenamento genérico que combina tudo o que você aprendeu sobre coleções e genéricos! Você criará uma classe Storage<T> que pode armazenar itens de qualquer tipo, recuperá-los e ser percorrida usando um loop for-in.

Você organizará seu código em dois arquivos:

  • storage.dart: Crie seu sistema de armazenamento genérico com duas classes:
    • Uma classe StorageIterator<T> que implementa Iterator<T> para permitir a iteração sobre os itens armazenados
    • Uma classe Storage<T> que estende Iterable<T> com as seguintes capacidades:
      • Uma lista privada para manter os itens internamente
      • Um método add(T item) para armazenar um novo item
      • Um método getAt(int index) que retorna o item no índice fornecido
      • Um getter count que retorna o número de itens armazenados
      • Um getter iterator que retorna um StorageIterator para os itens armazenados
  • main.dart: Importe seu arquivo de armazenamento e demonstre o armazenamento genérico com diferentes tipos:
    • Crie um Storage<String> e adicione três nomes de cidades: 'Paris', 'Tokyo', 'Sydney'
    • Imprima a contagem de itens
    • Imprima o item no índice 1
    • Use um loop for-in para imprimir cada cidade em sua própria linha
    • Imprima uma linha vazia
    • Crie um Storage<int> e adicione quatro números: 100, 200, 300, 400
    • Use o método where para filtrar valores maiores que 150 e, em seguida, imprima a lista resultante

Seu sistema de armazenamento deve funcionar perfeitamente com qualquer tipo, mantendo total segurança de tipos. Como ele estende Iterable, ele ganha automaticamente acesso a métodos poderosos como where, map e fold!

Saída esperada:

Count: 3
Item at 1: Tokyo
Paris
Tokyo
Sydney

[200, 300, 400]

Experimente você mesmo

import 'storage.dart';

void main() {
  // TODO: Crie um Storage<String> para cidades
  // Adicione três cidades: 'Paris', 'Tokyo', 'Sydney'

  // TODO: Imprima a contagem de itens (formato: "Count: X")

  // TODO: Imprima o item no índice 1 (formato: "Item at 1: X")

  // TODO: Use um loop for-in para imprimir cada cidade em sua própria linha

  // TODO: Imprima uma linha vazia
  print('');

  // TODO: Crie um Storage<int> para números
  // Adicione quatro números: 100, 200, 300, 400

  // TODO: Use o método where para filtrar valores maiores que 150
  // Em seguida, imprima a lista resultante usando toList()
}

Todas as lições de Programação Orientada a Objetos