An open API service indexing awesome lists of open source software.

https://github.com/victorvazdev/anybank


https://github.com/victorvazdev/anybank

Last synced: 9 months ago
JSON representation

Awesome Lists containing this project

README

          

# 🏩 AnyBank - Simulador de Contas Bancárias em Dart

**AnyBank** Ă© um projeto em Dart que simula mĂșltiplos tipos de contas bancĂĄrias com comportamentos distintos, utilizando conceitos de **programação orientada a objetos**, **herança**, **polimorfismo**, **mixins** e **encapsulamento**.

---

## 🚀 Funcionalidades

- 📌 **Conta Corrente**: permite envio com cheque especial (emprĂ©stimo).
- 💰 **Conta Poupança**: inclui cálculo de rendimento.
- 🏱 **Conta Salário**: permite depósitos com identificação do empregador.
- 🏭 **Conta Empresa**: aplica taxa sobre transaçÔes usando mixin `Imposto`.
- 📈 **Conta Investimento**: aplica taxa sobre recebimentos e envios.
- 📊 Exibe o saldo de forma formatada a cada operação.

---

## đŸ§± Arquitetura
```
lib/
├── conta.dart # Classe abstrata base
├── conta_corrente.dart # Subclasse: Conta Corrente
├── conta_poupanca.dart # Subclasse: Conta Poupança
├── conta_salario.dart # Subclasse: Conta Salário
├── conta_empresa.dart # Subclasse: Conta Empresa
├── conta_investimento.dart # Subclasse: Conta Investimento
├── imposto.dart # Mixin de taxa de imposto
bin/
└── main.dart # Ponto de entrada do app
```

---

## 📋 Exemplo de Uso

```dart
ContaCorrente contaChris = ContaCorrente('Chris', 4000);
contaChris.imprimeSaldo();
contaChris.enviar(4300); // Usa limite de empréstimo (300)

ContaPoupanca contaDenize = ContaPoupanca('Denize', 4000);
contaDenize.calculaRendimento(); // Aplica 5% de rendimento

ContaSalario contaCatarina = ContaSalario('Catarina', 5000, 'Empresa X', '101010101000110');
contaCatarina.depositar(15000); // Deposita com CNPJ do empregador

ContaEmpresa contaMatheus = ContaEmpresa('Matheus', 2000);
contaMatheus.enviar(1000); // Aplica taxa de 3%

ContaInvestimento contaRoberta = ContaInvestimento('Roberta', 2000);
contaRoberta.receber(1000); // Aplica taxa de 3%
```

---

## 🧠 Conceitos Utilizados
* **Classes abstratas** para padronizar contratos (Conta)
* **Herança** para reutilizar e estender comportamento
* **Mixins** (Imposto) para aplicar funcionalidades de forma modular
* **Encapsulamento** com atributos privados (_saldo)
* **Sobrescrita de métodos** (@override) para comportamento customizado

---

## Exemplo de SaĂ­da

Exemplo de saĂ­da do Anybank