Tópicos
- Uso de excepções e colecções
- O exercício de C++ deve ser entregue, em papel, na aula prática da semana de 2014/11/02 - ex07cpp.pdf
Exercício 1: Caderneta e Cromos
Considere uma caderneta de cromos. Os cromos têm um nome e uma imagem. Não é necessário modelar a imagem, considere a imagem como sendo uma instância da seguinte classe:
class Image { /* conteúdo omitido */ }
A caderneta guarda os cromos pela ordem natural dos nomes e não permite guardar cromos repetidos. É possível adicionar cromos a uma caderneta (método add) e é possível remover um cromo se for indicado o seu nome (método remove). Duas cadernetas dizem-se iguais (equals) se tiverem o mesmo número de cromos (independentemente das características dos cromos individuais). É possível obter uma lista ordenada (por nome) contendo os cromos de uma caderneta (método getAll).
Modele e implemente as classes dos cromos (Card) e da caderneta (Album) (utilize classes do pacote de colecções do Java).
[ resolução (para um problema semelhante): procurar resolver antes de consultar ]
Exercício 2: 1001 Noites (Arabian Nights)
Considere o enunciado da Aula Prática 04 ("Arabian Nights"), considerando-se as seguintes alterações:
Os métodos grantWish não retornam qualquer valor ( void ), mas lançam excepções (especializações de SomethingWrongWithGenieException):
- NoMoreWishesException (no caso de um FriendlyGenie já ter realizado todos os desejos);
- BadMoodException (no caso de um GrumpyGenie já ter realizado o primeiro desejo);
- OopsException (lançada sempre que um RecyclableDemon realiza um desejo); e
- TiredOhSoTiredException (no caso de um RecyclableDemon já ter sido reciclado).