Exercícios
Tema: Encapsulamento
Exercício 1
Crie uma classe ContaBancaria
representando uma conta bancária com métodos para depositar, sacar e verificar o saldo.
- Use encapsulamento para proteger o saldo.
- Ao tentar sacar um valor quando o saldo é zero, esse valor é descontado do cheque especial.
- Crie testes de unidade para as validações que você implementar.
Exercício 2
Crie a classe Reserva
, que pertenceria a um sistema de reservas de hotel. A classe possui os atributos: número do quarto, nome do hóspede, valor por diária, data de check-in e data de check-out. Implemente métodos para reservar, cancelar a reserva, calcular o número de diárias entre as datas de reserva.
- Implemente descontos para um determinado número de diárias: 5 a 9 diárias -> 5%, 10 ou mais diárias -> 10%
- Determine a quantidade mínima e máxima de diárias para a reserva.
- Determine o horário de check-out, para que seja possível determinar o número de diárias de forma mais clara. Por exemplo, se o horário de check-in e check-out é 13:00 e o hóspede chegou às 13:00 do dia 04/11 e saiu às 16:00 do dia 06/11, devem ser cobradas 3 diárias, porque o hóspede passou do horário de check-out no último dia.
Exercício 3
Implemente a classe Personagem
, que representa um personagem de jogo. Crie os atributos encapsulados para: nome, pontos de saúde e experiência. Além disso, implemente os métodos para sofrer dano, recuperar saúde e ganhar experiência.
- A saúde máxima do personagem é 100.
- Ganhar experiência aumenta a experiência do personagem em 100 pontos. O limite é 900. O valor da experiência não é mais incrementado ao atingir 900.
- O dano sofrido do personagem segue a seguinte regra: inicialmente, o dano sofrido é 10 e vai sendo reduzido de 1 em 1, conforme a experiência cresce: para experiência 0 -> dano 10, 100 -> dano 9, 200 -> dano 8, …, 900 -> dano 1.
Exercício 4
Crie a classe Postagem
, que representa uma postagem de uma rede social textual. Os atributos de uma postagem são: texto, data, autor e número de curtidas. Os atributos texto, data e autor poderão ser manipulados somente através dos respectivos getters e setters, mas o número de curtidas terá somente o método acessor getCurtidas()
. O número de curtidas poderá ser alterado através dos métodos curtir()
e descurtir()
, que incrementará ou decrementará o número de curtidas em 1, respectivamente. O número mínimo de curtidas que uma postagem pode ter é 0. Descurtir além desse limite não causará nenhuma mudança.