1
resposta

[Projeto] Desafio: hora da prática - Exercicio 3

namespace Banco;

internal class Transacao
{
    public double Valor { get; }
    public string Tipo {get; }
}

internal abstract class Conta
{
    public List<Transacao> transacoes = new List<Transacao>();
    public Conta(string tipo)
    {
        Tipo = tipo;
    }

    public string Tipo {get; }

    internal abstract double CalcularSaldo();
}

internal class ContaCorrente : Conta
{
    public ContaCorrente() : base("Conta Corrente")
    {
    }

    internal override double CalcularSaldo()
    {
        return transacoes.Sum(x => x.Valor);
    }
}

internal class ContaPoupanca : Conta
{
    public ContaPoupanca() : base("Conta Poupanca")
    {
    }

    internal override double CalcularSaldo()
    {
        return transacoes.Sum(x => x.Valor) * 0.10;
    }
}
1 resposta

Oi, Eduardo! Como vai?

Sua implementação ficou bem organizada ao separar Conta, ContaCorrente, ContaPoupanca e Transacao, usando herança e método abstrato com CalcularSaldo().

Um ponto de atenção é que, na ContaPoupanca, o cálculo atual retorna apenas 10% do valor das transações; se a ideia for aplicar um rendimento de 10% sobre o saldo, o cálculo poderia somar o saldo com esse rendimento. Uma dica interessante para o futuro é criar um construtor em Transacao para preencher Valor e Tipo ao criar o objeto:


internal class Transacao
{
    public double Valor { get; }
    public string Tipo { get; }

    public Transacao(double valor, string tipo)
    {
        Valor = valor;
        Tipo = tipo;
    }
}

Esse código permite criar uma transação já com valor e tipo definidos, evitando objetos incompletos.

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