Exercício de fixação de Programação Orientada a Objetos em Java, cobrindo classes abstratas, herança, polimorfismo, interfaces e tratamento de exceções.
- Classes e objetos
- Construtores
- Encapsulamento
- Herança
- Polimorfismo (sem uso de
instanceof) - Classe abstrata
- Interface
- Associação entre classes
- Tratamento de exceções (
try/catch,throw)
src/
├── application/
│ └── Main.java
├── domain/
│ ├── interfaces/
│ │ └── Emprestavel.java
│ ├── livro/
│ │ └── Livro.java
│ └── pessoa/
│ ├── Pessoa.java
│ ├── Cliente.java
│ └── Funcionario.java
└── util/
└── ImpressoraPessoa.java
Classe base com os atributos nome e idade, e o método abstrato exibirTipo(), implementado de forma diferente por cada subclasse.
Representa um cliente da biblioteca. Guarda o livro atualmente emprestado (Livro livro) e a quantidade de livros já emprestados (livrosEmprestados).
Representa um funcionário da biblioteca, com o atributo adicional salario.
Contrato para objetos que podem ser emprestados. Define o método:
void emprestar(Cliente cliente);Representa um livro com titulo, autor e o status emprestado. Ao chamar emprestar():
- Se estiver disponível, associa o livro ao cliente e marca como emprestado.
- Se já estiver emprestado, lança uma
RuntimeException("Livro já está emprestado.").
Método estático imprimirPessoa(Pessoa pessoa) que imprime nome, idade e tipo de qualquer Pessoa, usando polimorfismo — sem instanceof.
Nome: Maria
Idade: 24
Funcionário
Livro emprestado com sucesso.
Livro já está emprestado.
javac -d bin src/application/Main.java src/domain/pessoa/*.java src/domain/livro/*.java src/domain/interfaces/*.java src/util/*.java
java -cp bin application.Main- Método
devolver()para liberar o livro - Limite de 3 empréstimos simultâneos por cliente (exige trocar
Livro livropor uma lista) - Enum
CategoriaLivro(ROMANCE, TECNOLOGIA, HISTORIA, FANTASIA) - Sobrescrita de
toString()emLivro
- Java (JDK 8+)