Lista de Exercícios 016: Iterator
Exercício 1 : Situações para análise
Seção intitulada “Exercício 1 : Situações para análise”Analise cada situação e diga se o padrão Iterator é ou não uma boa escolha. Em cada caso, classifique como adequada ou não adequada e justifique brevemente.
- Situação 1: um sistema precisa percorrer tanto uma lista de alunos quanto uma árvore de disciplinas usando a mesma lógica cliente.
- Situação 2: uma classe
Somadorrecebe sempre dois números fixos e nunca trabalha com coleções. - Situação 3: uma plataforma educacional precisa oferecer navegação normal e reversa pelos módulos de um curso.
- Situação 4: uma aplicação percorre uma única lista pequena em um único ponto do código, sem expectativa de mudança.
- Situação 5: um mecanismo de busca interno precisa iterar resultados paginados sem expor detalhes de paginação ao cliente.
Exercício 2 : Código com problema
Seção intitulada “Exercício 2 : Código com problema”Leia o código abaixo, identifique o problema conceitual relacionado ao acoplamento com a estrutura interna da coleção e sugira como melhorá-lo em alto nível usando Iterator.
import java.util.List;
class RelatorioCurso { public void imprimir(List<String> modulos) { for (int i = 0; i < modulos.size(); i++) { System.out.println(modulos.get(i)); } }}Considere na resposta os conceitos de encapsulamento, interface de iteração, estado da travessia e independência entre cliente e coleção concreta.
Exercício 3 : Múltipla escolha
Seção intitulada “Exercício 3 : Múltipla escolha”Uma equipe quer permitir que o mesmo conjunto de módulos de um curso seja percorrido em ordem normal, reversa e filtrada, sem alterar o código cliente que consome esses módulos. Qual alternativa descreve melhor a solução?
A. Usar Iterator para encapsular diferentes formas de travessia por uma interface comum.
B. Usar Flyweight para compartilhar os módulos entre várias turmas e reduzir memória.
C. Usar Singleton para garantir que exista apenas uma coleção de módulos no sistema.
D. Usar Facade para esconder o subsistema de matrícula sem alterar a forma de percorrer dados.
Gabarito: alternativa A.
Exercício 4 : Implementação simples
Seção intitulada “Exercício 4 : Implementação simples”Implemente uma solução simples usando Iterator para representar a navegação por aulas de um curso online.
- Crie uma interface
IteradorAulacom métodos comotemProximo()eproximo(). - Crie uma classe
CursoOnlineque armazene aulas. - Faça
CursoOnlinefornecer um iterador para percorrer as aulas em ordem normal. - Crie um segundo iterador para percorrer em ordem inversa.
- No
main, demonstre os dois percursos sobre a mesma coleção.