Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
3
respostas

[Projeto] Lista de exercícios

Praticar é muito importante! Por isso, preparamos uma lista de exercícios para você exercitar o conteúdo abordado nesta aula.

  1. Crie uma enum em PHP com tipos de contas bancárias e implemente um método informando se a conta possui taxas. Contas correntes e de investimento possuem taxas, enquanto contas poupança e universitárias não;

  2. Crie uma classe que represente uma conta com as propriedades saldo, nome do titular e tipo. Use os tipos e formas de acesso adequadas.

Você pode clicar no botão Opinião do instrutor para conferir as respostas.

3 respostas
solução!

Boa tarde! Segue a implementação que eu idealizei para a lista proposta.

Conta.php

<?php

require_once __DIR__ . "/TiposDeContas.php";

class Conta {
    public function __construct(
        public readonly string $nomeDoTitular,
        public float $saldo,
        public readonly TiposDeContas $tipoDeConta,

    ) {
    }

    public function calcularTaxas(TiposDeContas $conta): void {
        if ($conta == TiposDeContas::corrente  || $conta == TiposDeContas::investimento) {
            echo "O tipo de conta informado TEM taxas";
        } else {
            echo "O tipo de conta informado NÃO TEM taxas";
        }
    }

    public function depositar(float $saldoAserDepositado): void {
        if ($saldoAserDepositado <= 1) {
            echo "O valor depositado precisa ser maior que 1 R$ \n";
        } else {
            $this->saldo += $saldoAserDepositado;
            echo "Realizado o depósito no valor de {$saldoAserDepositado} \n";
        }
    }
}

TiposDeContas.php

<?php

enum TiposDeContas {
    case corrente;
    case investimento;
    case poupanca;
    case universitatio;
}

index.php

<?php
require_once __DIR__ . "/TiposDeContas.php";
require_once __DIR__ . "/Conta.php";


/*
Praticar é muito importante! Por isso, preparamos uma lista de exercícios para você exercitar o conteúdo abordado nesta aula.
1) Crie uma enum em PHP com tipos de contas bancárias e implemente um método informando se a conta possui taxas. Contas correntes e de investimento possuem taxas, enquanto contas poupança e universitárias não;
2) Crie uma classe que represente uma conta com as propriedades saldo, nome do titular e tipo. Use os tipos e formas de acesso adequadas.
Você pode clicar no botão Opinião do instrutor para conferir as respostas.

*/

$contaEliel = new Conta("Eliel", 0, TiposDeContas::poupanca);

echo "
O nome da do titular é: {$contaEliel->nomeDoTitular},\n
o saldo atual é: {$contaEliel->saldo} \n
e o tipo da conta é: {$contaEliel->tipoDeConta->name}
";

$contaEliel->depositar(0.5);
$contaEliel->depositar(8000);
$contaEliel->calcularTaxas($contaEliel->tipoDeConta);

Olá, Eliel! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o enum em PHP para organizar os tipos de contas bancárias, utilizou muito bem uma classe com propriedades para representar uma conta e ainda compreendeu a importância do método de verificação de taxas para diferenciar contas com ou sem cobrança.

Uma dica interessante para o futuro é mover a lógica de taxas diretamente para dentro da enum, deixando o código mais expressivo e centralizado. Assim:

<?php
enum TiposDeContas {
    case corrente;
    case investimento;
    case poupanca;
    case universitaria;

    public function possuiTaxa(): bool {
        return match($this) {
            self::corrente, self::investimento => true,
            self::poupanca, self::universitaria => false,
        };
    }
}

Isso faz com que você possa chamar $contaEliel->tipoDeConta->possuiTaxa() sem precisar passar o tipo como parâmetro para outro método.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Adicionar validações: impedir depósitos negativos ou valores incoerentes.
  • Explorar testes automatizados: garantir que cada tipo de conta se comporte corretamente.
  • Usar objetos para regras de negócio: centralizar comportamentos na enum ou em classes auxiliares.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você acha mais interessante evoluir este código centralizando a lógica de taxas dentro da enum ou criar métodos adicionais na classe Conta para manipular melhor os depósitos e saques?

Abraço e bons estudos!

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

Boa tarde Professor!

Essa resolução ai ficou chique demais, vou tentar implementar nos próximos exercícios.

Obrigado pelo retorno.