1
resposta

[Projeto] Minha solução para o exercício

  1. Crie uma classe chamada ContaBancaria com um construtor que aceita os parâmetros titular e saldo. Inicie o atributo ativo como False por padrão.

  2. Na classe ContaBancaria, adicione um método especial str que retorna uma mensagem formatada com o titular e o saldo da conta. Crie duas instâncias da classe e imprima essas instâncias.

  3. Adicione um método de classe chamado ativar_conta à classe ContaBancaria que define o atributo ativo como True. Crie uma instância da classe, chame o método de classe e imprima o valor de ativo.

  4. Refatore a classe ContaBancaria para utilizar a abordagem "pythonica" na criação de atributos. Utilize propriedades, se necessário.

  5. Crie uma instância da classe e imprima o valor da propriedade titular.

  6. Crie uma classe chamada ClienteBanco com um construtor que aceita 5 atributos. Instancie 3 objetos desta classe e atribua valores aos seus atributos através do método construtor.

  7. Crie um método de classe para a conta ClienteBanco.

class BankAccount:
    def __init__(self, holder, balance):
        self._holder = holder
        self._balance = balance
        self._active = False

    def __str__(self):
        return f"Holder: {self._holder}, Balance: R$ {self._balance}"
    
    def activate_account(self):
        self._active = True


class BankAccountPythonica:
    def __init__(self, holder, balance):
        self._holder = holder
        self._balance = balance
        self._active = False

    def __str__(self):
        return f"Holder: {self._holder}, Balance: R$ {self._balance}"

    def activate_account(self):
        self._active = True

    @property
    def holder(self):
        return self._holder

    @property
    def balance(self):
        return self._balance

    @property
    def active(self):
        return self._active


account1 = BankAccountPythonica("John Doe", 200.00)

class BankCustomer:
    def __init__(self, name, age, address, phone, email):
        self.name = name
        self.age = age
        self.address = address
        self.phone = phone
        self.email = email
    
    def create_account(self, initial_balance=0):
        account = BankAccountPythonica(self.name, initial_balance)
        return account

customer1 = BankCustomer(
    name="Alice Silva",
    age=30,
    address="Rua das Flores, 123 - São Paulo",
    phone="(11) 98765-4321",
    email="alice.silva@example.com"
)

customer2 = BankCustomer(
    name="Bruno Costa",
    age=42,
    address="Avenida Brasil, 456 - Rio de Janeiro",
    phone="(21) 99876-5432",
    email="bruno.costa@example.com"
)

account1 = customer1.create_account(1000)
account2 = customer2.create_account(2000)
1 resposta

Olá, Taciano. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Sua solução está muito bem estruturada e mostra que você entendeu bem os conceitos de orientação a objetos em Python. A separação entre BankAccount e BankAccountPythonica, com o uso de propriedades, ficou bem clara e organizada.

Uma dica interessante para o futuro é explorar o método especial __repr__, que também pode ser usado para representar objetos de forma mais técnica, ideal para debug.Veja este exemplo:


class Produto:
    def __init__(self, nome, preco):
        self.nome = nome
        self.preco = preco

    def __repr__(self):
        return f"Produto('{self.nome}', {self.preco})"

p = Produto('Livro', 29.90)
print(p)

Este código mostra uma representação mais direta de um objeto da classe Produto, útil para desenvolvedores.

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