Exercício 3 - Receituário Galáctico
Receituário Galáctico
O planeta Vogsphere foi invadido por um maligno vírus alienígena que chegou do espaço sideral por meio de um asteróide proveniente do cinturão de Kuiper. O vírus se alastrou rapidamente por todos os países do globo. Todos os governantes do planeta (com exceção de um maluco aloprado de uma republiqueta irrelevante) decretaram uma rígida quarentena que permite que os cidadãos saiam de casa apenas para comprar comida.
De saco cheio de comer sempre a mesma coisa, os habitantes do planeta estão se matando uns aos outros e sua tarefa para salvar a espécie é desenvolver um programa em Java para que os habitantes se organizem melhor para irem ao supermercado comprar os ingredientes para preparar receitas de comidas gostosas que impeçam a extinção da espécie.
Seu programa deve permitir:
1) A leitura de um arquivo em disco contendo todos os possíveis ingredientes de receitas e a respectiva unidade. Por exemplo:
arroz integral - g
feijão preto - g
lentilha - xícara(s)
farinha de aveia - xícara(s)
azeite - colher(es) de sopa
uva - g
cebola - unidade(s)
abacate - unidade(s)
tomate - unidade(s)
salsinha - maço(s)
sal - pitada(s)
2) A leitura de arquivos representando receitas, por exemplo:
Título: Hambúrguer de lentilha
Ingredientes:
lentilha - 1
farinha de aveia - 1
cebola - 1
sal - 1
salsinha - 1
azeite - 1
Modo de fazer:
1- Em uma panela grande cozinhe a lentilha até ficar macia;
2- Escorra a água e transfira para um prato grande. Amasse com ajuda de um garfo, não precisa ficar homogêneo, pode deixar alguns grãos inteiros para dar textura ao hambúrguer;
3- Pique a cebola em cubinhos e doure no óleo vegetal. Para sujar menos louça indico você a dourar a cebola na mesma panela usada no cozimento da lentilha;
4- Misture a lentilha amassada com a cebola dourada, salsa picada, sal a gosto e farinha de aveia (ou outra farinha);
5- Modele os hambúrgueres no tamanho e espessura que quiser;
6- Aqueça um fio de óleo vegetal e frite o hambúrguer nos dois lados até ficar dourado. Os hambúrgueres que você não for consumir congele sem fritar para os próximos dias.
3) Seu programa deve receber como entrada um arquivo contendo uma lista de nomes de arquivos de receitas que um cidadão gostaria de preparar em uma determinada semana. Por exemplo:
hamburgerVeggie.txt
buxadaDePalmito.txt
sopaDeGirimum.txt
4) Seu programa deve gravar um arquivo de saída contendo a lista completa de compras do supermercado da semana, ou seja, a soma de todos os ingredientes de todas as receitas que o cidadão gostaria de preparar naquela semana. Por exemplo:
lentilha - 2 xícara(s)
farinha de aveia - 1 xícara(s)
cebola - 3 unidade(s)
sal - 5 pitada(s)
salsinha - 2 maço(s)
azeite - 5 colher(es) de sopa
tomate - 6 unidade(s)
arroz integral - 3 xícara(s)
feijão preto - 2 xícara(s)
5) Seu programa deve, também, gerar um arquivo PDF contendo as Receitas da Semana formatadas de uma forma esteticamente agradável.
6) Você deve gerar novas exceções caso haja uma receita com ingrediente desconhecidos ou se algum dos arquivos de entrada estiverem com o formato errado (diferente do esperado). Para tanto, defina novas classes para tais exceções e escreva apropriadamente o código que vai lançar essas exceções e captura-las.
7) Você deve capturar de forma apropriada qualquer exceção lançada pelo sistema e deve apresentar ao usuário um texto o mais claro, elegante e explicativo possível sobre o que deu errado.
8) Junto com o seu código, você deve entregar uma bateria de testes JUnit 5 para testá-lo. Você deve desenvolver os testes incrementalmente à medida em que desenvolve as classes do programa. Ou seja, não deixe para escrever as classes de teste por último, quanto mais cedo melhor.
- O exercício deve ser feito individualmente.
- O enunciado abaixo não dá a receita de bolo de como resolver todos os problemas. Você precisará pesquisar na Internet, escrever dúvidas no Fórum e discutir com os colegas.
- Fiquem à vontade para postar dúvidas no Fórum e também para trocar
experiências no Fórum; por exemplo, se descobrir uma biblioteca de
software livre legal ou alguma classe da biblioteca padrão de java que
ajude bastante, pode postar no Fórum. Você apenas não pode postar seu
código no fórum.
Leitura dos ingredientes, arquivos de Receitas e arquivo com lista de receitas (1 ponto)
Gerar arquivo de saída com a soma dos ingredientes (1,5 ponto)
Gerar arquivo PDF esteticamente agradável das receitas (1,5 ponto)
Tratativa das exceções - ingrediente desconhecido (1,5 ponto)
Tratativa das exceções - formato de entrada errado (1,5 ponto)
Testes automatizados dos casos de exceção (1 ponto)
Cobertura dos testes (1 ponto)
Organização dos testes (1 ponto)
- Você pode discutir soluções com os colegas mas não pode compartilhar o código da sua solução com seus colegas de disciplina.
- Plágio é vedado pelo código de ética da USP e, caso seja detectado, tanto o plagiado quanto o plagiador receberão nota -10 no exercício. No caso de reincidência, ambos terão nota 0 na disciplina.
Referências Bibliográficas:
https://temperoalternativo.com.br/2015/01/26/hamburguer-de-lentilha/
https://pdfbox.apache.org/
https://github.com/LibrePDF/OpenPDF
https://java-source.net/open-source/pdf-libraries