Ficha 02 · Java avançado
Exercício 1 · Exceção própria
Cria uma exceção IdadeInvalidaException extends Exception. Modifica o setIdade de uma classe Pessoa para lançar esta exceção se a idade for negativa ou > 150. Demonstra try-catch.
Resposta:
Exercício 2 · Ler e processar ficheiro
Cria um ficheiro numeros.txt com 10 números (um por linha). Lê o ficheiro, calcula soma, média e máximo.
Resposta:
Exercício 3 · Escrever log
Cria uma classe Logger com método log(String msg) que adiciona uma linha ao ficheiro app.log no formato [timestamp] msg. Usa Files.writeString com APPEND.
Resposta:
Exercício 4 · Streams · alunos
Dada esta coleção de alunos:
List<Aluno> alunos = List.of(
new Aluno("Ana", 15.5),
new Aluno("Bruno", 8.0),
new Aluno("Carla", 12.0),
new Aluno("Diogo", 9.5),
new Aluno("Eva", 18.0)
);
Usa streams para:
- Filtrar os alunos com nota igual ou superior a 10.
- Imprimir os nomes desses alunos em maiúsculas.
- Calcular a média das notas de toda a turma.
Resultado esperado: ANA, CARLA, EVA e a média 12.6.
Resposta:
Exercício 5 · JDBC · conectar a SQLite
Cria um projeto Maven com SQLite (org.xerial:sqlite-jdbc). Liga-te à BD escola.db, cria a tabela alunos (id INTEGER PRIMARY KEY AUTOINCREMENT, nome TEXT NOT NULL, nota REAL NOT NULL), insere 3 alunos e mostra a média e a nota máxima.
Resposta:
Exercício 6 · JDBC · DAO completo
Cria a classe AlunoDAO com métodos listar(), inserir(Aluno), atualizar(Aluno) e apagar(int id) para a BD do exercício 5. Aqui o Aluno tem também o id: record Aluno(int id, String nome, double nota).
Resposta:
Exercício 7 · Testar casos-limite
Adiciona JUnit 5 ao projeto. Cria a classe Imc com o método estático String classificar(double peso, double altura), que calcula o índice de massa corporal (peso / (altura * altura)) e devolve "Abaixo do peso" se for inferior a 18.5, "Normal" se for inferior a 25, "Excesso de peso" se for inferior a 30 e "Obesidade" nos restantes casos. Lança IllegalArgumentException se o peso ou a altura não forem positivos. Escreve testes para um caso normal de cada classe, para os três valores-limite (18.5, 25 e 30) e para o erro.
Resposta:
Exercício 8 · App CLI · Gestor de tarefas
Cria uma aplicação CLI (loop com menu) que permita:
- Adicionar tarefa (com descrição).
- Listar todas (com índice).
- Marcar como feita.
- Apagar.
- Sair.
Guarda as tarefas em ArrayList<Tarefa> (sem persistência para simplificar).
Antes de escreveres código, desenha a interface em texto: o menu principal, o que aparece depois de cada opção (mensagens de sucesso e de erro) e o que acontece quando o utilizador escreve algo que não é um número. Só depois a programas.
Resposta: