1
resposta

[Projeto] Desenvolvimento das Atividades (2 Codigos)

Codigo 1

class ContaBancaria:
    _clientes = []

    def __init__(self, titular: str, saldo: int = 0):
        self.titular = titular.title()
        self.saldo = saldo
        self._ativo = False
        ContaBancaria._clientes.append(self)

    def __str__(self) -> str:
        return f'{self.titular} | Saldo: {self.saldo}'

    # =========================
    # Propriedades
    # =========================

    @property
    def ativo(self) -> bool:
        """Estado lógico da conta."""
        return self._ativo

    @property
    def status(self) -> str:
        """Representação visual do estado."""
        return '⌧' if self._ativo else '☐'

    # =========================
    # Regras de negócio
    # =========================

    def ativar(self) -> None:
        self._ativo = True

    def desativar(self) -> None:
        self._ativo = False

    def alternar_estado(self) -> None:
        self._ativo = not self._ativo

    # =========================
    # Métodos de classe
    # =========================

    @classmethod
    def listar_clientes(cls) -> None:
        for cliente in cls._clientes:
            print(
                f'{cliente.titular.ljust(25)} | '
                f'{str(cliente.saldo).ljust(15)} | '
                f'{cliente.status}'
            )

cliente1 = ContaBancaria('Ana Silva', 28000)
cliente2 = ContaBancaria('Bruno Costa', 35000)
cliente3 = ContaBancaria('Carla Pereira', 22000)

cliente1.ativar()
cliente3.alternar_estado()

ContaBancaria.listar_clientes()

Codigo 2

class ClienteBanco:
    clientes = []

    def __init__(
        self,
        nome: str,
        cpf: str,
        idade: int,
        agencia: str,
        saldo: float
    ):
        self.nome = nome
        self.cpf = cpf
        self.idade = idade
        self.agencia = agencia
        self.saldo = saldo

        ClienteBanco.clientes.append(self)

    def __str__(self) -> str:
        return f'{self.nome} | CPF: {self.cpf} | Saldo: {self.saldo}'

    @classmethod
    def listar_clientes(cls) -> None:
        for cliente in cls.clientes:
            print(
                f'{cliente.nome.ljust(20)} | '
                f'{cliente.cpf.ljust(14)} | '
                f'{str(cliente.idade).ljust(5)} | '
                f'{cliente.agencia.ljust(6)} | '
                f'{str(cliente.saldo).ljust(10)}'
            )

cliente1 = ClienteBanco(
    nome='Ana Silva',
    cpf='123.456.789-00',
    idade=30,
    agencia='0001',
    saldo=2500.00
)

cliente2 = ClienteBanco(
    nome='Bruno Costa',
    cpf='987.654.321-00',
    idade=42,
    agencia='0002',
    saldo=4800.50
)

cliente3 = ClienteBanco(
    nome='Carla Pereira',
    cpf='456.789.123-00',
    idade=25,
    agencia='0001',
    saldo=1200.75
)

ClienteBanco.listar_clientes()
1 resposta

Oi, Lucas! Como vai?

Agradeço por compartilhar. Gostei da sua organização dos códigos, principalmente na separação clara entre propriedades, regras de negócio e métodos de classe, o que mostra um bom entendimento de orientação a objetos e do uso de @property pra representar estados da conta de forma mais legível.

Continue explorando esse cuidado com estrutura e legibilidade, isso é muito importante para projetos maiores e trabalho em equipe.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!