Este projeto foi desenvolvido como meu primeiro sistema acadêmico, durante o terceiro período do curso de Ciência da Computação na UEPB (Universidade Estadual da Paraíba).
O objetivo principal foi aplicar, na prática, os conceitos fundamentais de Programação Orientada a Objetos (POO) utilizando Java, simulando o funcionamento básico de uma biblioteca.
O sistema permite o gerenciamento de:
- 📖 Livros
- 👥 Usuários
- 🔄 Empréstimos
Toda a lógica foi estruturada para refletir um cenário real, onde diferentes tipos de usuários possuem regras específicas de empréstimo.
- ✔ Cadastro de usuários (Aluno, Funcionário e Professor)
- ✔ Cadastro de livros
- ✔ Empréstimo de livros com validação de disponibilidade
- ✔ Devolução de livros
- ✔ Relatório geral do sistema
A classe Biblioteca atua como o núcleo do sistema, sendo responsável por:
- Gerenciar coleções de usuários e livros
- Controlar empréstimos ativos
- Garantir consistência nas operações
- Aplicar regras de disponibilidade de livros
Este projeto foi desenvolvido com foco nos principais pilares da orientação a objetos:
Uso de modificadores de acesso (private, protected) para proteger os dados e garantir integridade.
Estrutura hierárquica de usuários:
Usuario (classe abstrata)
↑
Funcionario
↑
Professor
Além disso:
Usuario
↑
Aluno
📌 Observação: A classe Professor herda de Funcionario, reaproveitando atributos e comportamentos.
Cada tipo de usuário possui seu próprio comportamento para:
int prazoDevolucao();Implementado através da interface:
UserPolicyA classe Usuario define comportamentos genéricos que são implementados pelas subclasses.
EmprestimoconectaUsuarioeLivroBibliotecagerencia todas as entidades- Uso de
Listpara armazenamento dinâmico
| Tipo | Prazo de Devolução |
|---|---|
| Aluno | 15 dias |
| Funcionário | 7 dias |
| Professor | 30 dias |
biblioteca/
│
├── Usuario.java
├── Aluno.java
├── Funcionario.java
├── Professor.java
│
├── Livro.java
├── Emprestimo.java
│
├── Biblioteca.java
├── Menu.java
│
└── UserPolicy.javaO sistema roda via terminal com um menu interativo:
=== MENU ===
1 - Adicionar usuário
2 - Adicionar livro
3 - Emprestar livro
4 - Devolver livro
5 - Relatório
0 - Sair
- Persistência em banco de dados
- Interface gráfica (JavaFX ou Swing)
- Sistema de multas por atraso
- Busca por ID (ao invés de nome)
- Aplicação de padrões de projeto (Strategy / Factory)
Este projeto representa um marco importante na minha formação, sendo o primeiro sistema completo desenvolvido durante a graduação, consolidando na prática os conceitos teóricos de orientação a objetos.
Se este projeto te ajudou ou serviu como referência, deixe uma ⭐ no repositório!
Desenvolvido por Jose Netto