1. Ver Capítulo 10 das Folhas Teóricas.
1.a) A classe iterador serve para referenciar itens em listas. Instâncias suas são usadas para percorrer listas, indicar posições nas quais se pretendem inserir itens, etc.
1.b)  Porque a classe Iterador necessita de aceder aos
itens da lista a que está associada, coisa que é proibida ao comum dos
mortais.
1.c) O primeiro é um inspector. Só com ele é possível aceder ao item na frente de uma lista constante. O segundo é um modificador, embora não directo. I.e., permite a alteração da lista (nomeadamente do item na sua frente), embora não a altere directamente. Através desta sobrecarga conseguimos o melhor de dois mundos.
1.d)  A utilidade do sinónimo Item é permitir escrever código
mais genérico, que pode ser facilmente adaptado de forma a representar listas
com outro tipo de itens.  As alterações a realizar seriam:
typedef TelefonemaAluno Item;ListaDeTelefonema por ListaDeAluno.1.e)  Ver lista_de_telefonema.H,
lista_de_telefonema_impl.H,
lista_de_telefonema.C,
telefonema.H,
telefonema_impl.H,
telefonema.C,
duracao_dos_telefonemas.C,
Makefile e telefonemas.txt.
1.f)  Basta fazer make ou make -k.