- Antonio Walter Araujo Filho
- Pedro Otávio Medeiros de Araujo
- Samuel Ótton Nogueira Maia
Sistema bancário desenvolvido em Java como projeto da disciplina de Boas Práticas de Programação. O sistema simula operações bancárias básicas, incluindo:
- Cadastro de clientes
- Criação de contas corrente e poupança
- Operações de depósito, saque e transferência
- Aplicação de rendimentos em contas poupança
- Geração de relatórios consolidados
Aplicar na prática as boas práticas de programação estudadas em sala de aula:
- Princípios SOLID
- Clean Code
- Programação Defensiva
- Padrões de Projeto
sistema-bancario/
│
├── src/
│ └── com/
│ └── banco/
│ ├── modelo/ # Classes de domínio
│ │ ├── Cliente.java
│ │ ├── Conta.java (interface)
│ │ ├── ContaBancaria.java (abstrata)
│ │ ├── ContaCorrente.java
│ │ ├── ContaPoupanca.java
│ │ ├── Rendivel.java (interface)
│ │ └── TipoConta.java (enum)
│ │
│ ├── repositorio/ # Persistência em memória
│ │ ├── RepositorioClientes.java
│ │ └── RepositorioContas.java
│ │
│ ├── servico/ # Lógica de negócio
│ │ ├── ServicoCliente.java
│ │ ├── ServicoConta.java
│ │ └── ServicoRelatorio.java
│ │
│ ├── ui/ # Exibição da interface gráfica
│ │ └── BancoConsoleUI.java
│ │
│ ├── facade/ # Facade Pattern
│ │ └── SistemaBancario.java
│ │
│ └── Main.java # Aplicação principal
│
├── bin/ # Arquivos compilados (.class)
├── .gitignore
└── README.md
- Java JDK 8 ou superior
- Terminal/Prompt de Comando
- Navegue até o diretório raiz do projeto:
cd caminho/para/sistema-bancario- Compile todos os arquivos Java:
javac -d bin src/com/banco/modelo/*.java
javac -d bin -cp bin src/com/banco/repositorio/*.java
javac -d bin -cp bin src/com/banco/fabrica/*.java
javac -d bin -cp bin src/com/banco/servico/*.java
javac -d bin -cp bin src/com/banco/facade/*.java
javac -d bin -cp bin src/Main.javaOu compile tudo de uma vez:
javac -d bin src/com/banco/**/*.java src/*.javaApós compilar, execute:
java -cp bin Main- Windows
build.bat
- Linux/macOs
chmod +x build.sh
./build.sh
- Cadastrar novo cliente (nome e CPF)
- Verificar se cliente já existe
- Validação de dados (nome mínimo 3 caracteres, CPF 11 dígitos)
- Criar conta corrente
- Criar conta poupança
- Verificar se número da conta já existe
- Definir saldo inicial
- Realizar depósito
- Realizar saque (com verificação de saldo)
- Realizar transferência entre contas
- Consultar saldo de uma conta
- Aplicar rendimento percentual em todas as contas poupança
- Listar todas as contas ordenadas por saldo (decrescente)
- Relatório consolidado com totalizações por tipo
- Total geral de contas e saldo do banco
Cada classe tem uma única responsabilidade bem definida:
Cliente: representa dados do clienteContaBancaria: representa operações de contaRepositorioClientes: gerencia persistência de clientesServicoCliente: implementa lógica de negócio de clientes
Sistema aberto para extensão, fechado para modificação:
- Novos tipos de conta podem ser adicionados sem alterar código existente
- Interface
Contapermite polimorfismo FabricaContascentraliza criação de novos tipos
Subclasses podem substituir suas classes base:
ContaCorrenteeContaPoupancasubstituemContaBancariaperfeitamente- Comportamentos mantidos conforme esperado
Interfaces específicas em vez de uma interface geral:
- Interface
Conta: operações básicas de conta - Interface
Rendivel: apenas para contas com rendimento ContaCorrentenão é obrigada a implementaraplicarRendimento()
Dependência de abstrações, não de implementações concretas:
- Serviços dependem de interfaces (
Conta,Rendivel) - Facilita testes e manutenção
- Baixo acoplamento entre camadas
SistemaBancario fornece interface simplificada para todo o sistema.
RepositorioClientes e RepositorioContas abstraem a persistência.
- Java 8+
- Collections Framework (HashMap, ArrayList)
- BigDecimal (precisão em valores monetários)
- Optional (evitar NullPointerException)
- Streams API (operações funcionais)
- Enums (tipos seguros)
- Estrutura básica criada
- Camada de modelo completa
- Camada de repositório
- Camada de serviço
- Interface de usuário
- Testes unitários (planejado)
- Vídeo de apresentação (planejado)
Projeto desenvolvido para fins acadêmicos na disciplina de Boas Práticas de Programação - UFRN//IMD/DIMAp.