Sistema Bancário (Matheus Gaspar Gusmao e Vitor Hugo Camine)
Este projeto implementa um sistema bancário simples em Python utilizando padrões de projeto MVC, Observer e Factory Method.
Padrões de Projeto Utilizados
- MVC (Model–View–Controller)
pasta: Model
Contém toda lógica de negócio:
Conta
Banco
Movimentacao
ContaFactory
pasta: View
Exibe saídas e recebe notificações via Observer:
BancoView
pasta: Controller
Interpreta comandos do usuário e chama os métodos corretos do Model:
BancoController
- Factory Method
Implementado na classe:
model/conta_factory.py
Responsável por criar novas contas:
class ContaFactory: def criar_conta(self, numero): return Conta(numero)
O Banco usa exclusivamente a factory para criar contas, permitindo extensão futura (ex: conta poupança, conta salário).
- Observer
A classe Conta é um Subject que notifica automaticamente todas as Views registradas:
self.observers.append(obs) self.notify("mensagem")
A BancoView implementa:
def update(self, msg): print("[LOG]", msg)
Eventos notificados:
Depósito
Saque
Fechamento da conta
Como Executar o Sistema
Basta rodar:
python main.py
Você verá:
Sistema bancário
Comandos Disponíveis Criar uma conta abrir
Ex.:
abrir 100
Depositar depositar
Ex.:
depositar 100 50.0 20/11/2025 salario
Sacar sacar
Consultar saldo saldo
Extrato por data extrato
Fechar conta (saldo deve ser 0) fechar
Sair
Exemplos de Teste Abrir conta
abrir 101 Conta criada!
Depositar
depositar 101 100 22/11/2025 deposito_inicial Depósito realizado! [LOG] [DEPÓSITO] Conta 101: +100 (deposito_inicial)
Sacar
sacar 101 40 22/11/2025 mercado Saque realizado! [LOG] [SAQUE] Conta 101: -40 (mercado)
Extrato
extrato 101 22/11/2025 22/11/2025 100.00 deposito_inicial 22/11/2025 -40.00 mercado
Como o Observer funciona durante os testes
Sempre que ocorrer:
depósito
saque
fechamento
O sistema automaticamente envia:
[LOG] [DEPÓSITO] Conta 101: +100 (desc)
Sem necessidade de código extra no Controller.
Resumo Final Padrão Onde foi aplicado Objetivo MVC Separação Model / View / Controller Organização e escalabilidade Factory Method ContaFactory Criação padronizada de contas Observer Conta → View Atualizações automáticas em operações