#Python #desafio #POO

Criar o sistema bancário com orientação a objetos

Objetivos

Diagrama de classes - Sistema bancário

Classe conta

A classe conta deve ter:

Exemplo de implementação de conta

"""
Esta classe representa um banco, com funcionalidades básicas de depósito e saque.
O saldo da conta é mantido internamente e pode ser acessado através da propriedade 'saldo'.
Caso o valor do saque seja maior que o saldo disponível, um aviso de erro é mostrado.
"""
from datetime import datetime

class Banco:
    def __init__(self):
        self._saldo = 0
        self._extrato = []
    
    @property
    def saldo(self):
        return self._saldo
    
    @property
    def extrato(self):
        return f'Extrato: {self._extrato}\n Saldo: {self._saldo}'

    def depositar(self, valor):
        self._saldo += valor
        self._extrato.append(
            {
                "tipo":'deposito',
                "valor": valor,
                "data": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
            }
        )
        print(f'Deposito de R$ {valor} realizado com sucesso!')

    def sacar(self, valor):
        if valor > self._saldo:
            print('Saldo insuficiente')             
        else:
            self._saldo -= valor
            self._extrato.append(
                {
                    "tipo":'-saque--',
                    "valor": valor,
                    "data": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
                }
            )
            print(f'Saque de R$ {valor} realizado com sucesso!')

    def __str__(self):
        return f'Saldo: {self._saldo}'
    
    def mostrar_extrato(self):
        for item in self._extrato:
            print(f'{item["data"]}\t{item["tipo"]}\tR$ {item["valor"]}')
        print('=' * 20)
        print(f'Saldo: {self._saldo}')

def menu():
    menu = """\n
    ================ MENU ================
    [d]\tDepositar
    [s]\tSacar
    [e]\tExtrato
    [q]\tSair
    => """
    return input(menu)

def main():
    cliente = Banco()
    while True:
        opcao = menu()
        if opcao == 'd':
            valor = int(input('Digite o valor: '))
            cliente.depositar(valor)
        elif opcao == 's':
            valor = int(input('Digite o valor: '))
            cliente.sacar(valor)
        elif opcao == 'e':
            cliente.mostrar_extrato()
        elif opcao == 'q':
            break

if __name__ == '__main__':
    print('Bem-vindo ao Banco App')
    print('=' * 20)    
    main()

Conta corrente com herança

A Conta ela tem uma classe filha, então aqui a conta corrente estende a conta porque é uma classe do tipo conta, então ela tem tudo que a conta tem mais dois atributos que seriam: o limite e o limite de saques.

Atributo Histórico

Ainda continuando na conta temos o histórico, ele é um tipo de classe e essa classe é histórica, então uma conta tem um histórico, que pertence a uma conta.

Interface Transação

Classe cliente

A classe cliente tem:

Pessoa física

A classe pessoa física e é um tipo de cliente, ela tem:

Fase seguir

Implementar a interface gráfica
Salvar os dados em um arquivo txt.

#programador/desafios