Partilhar: Classroom Teams WhatsApp
aulify
UC UC00619 · T. Desenv. Software

Ficha 02 · Java avançado

Exceções, ficheiros, JDBC, testes
Versão · Aluno
Tempo · 4 horas
Aluno(a)
Turma
Nº
Data

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:

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:

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: