Seja a seguinte classe em Java cujo código fonte está na seguinte IDE online: Código do Projeto. Essa classe armazena dados de um exame, incluindo matrícula dos alunos que fizeram o exame e suas notas. Além disso, temos um método público print(), que imprime uma tabela com as notas. Essa tabela tem um cabeçalho e um rodapé, que na implementação atual estão "fixos". Ou seja, todos os usuários têm que contentar-se com a implementação proposta no código atual da classe. Seguem as perguntas:
- Qual padrão de projeto você poderia usar para tornar a implementação do método print() mais aberta? Isto é, uma implementação que permita aos usuários da classe customizar e modificar o cabeçalho e o rodapé da tabela de notas de um Exame;
- Implemente uma nova versão da classe que, de fato, faz uso desse padrão.