Olá, tudo bem?
Segue minha sugestão para a atividade 3 do desafio:
"3. Criar uma hierarquia de classes representando contas bancárias, como ContaCorrente e ContaPoupanca. Utilize herança e o conceito de métodos virtuais para implementar um método CalcularSaldo que retorne o saldo atual da conta."
Program.cs
class Program
{
static void Main(string[] args)
{
ContaCorrente cc = new(1000, 5);
ContaPoupanca cp = new(1000, 0.05);
cc.Depositar(500);
Console.WriteLine($"Saldo após depósito da Conta Corrente: {cc.CalcularSaldo()}");
cc.Sacar(500);
Console.WriteLine($"Saldo após sacar da Conta Corrente: {cc.CalcularSaldo()}");
cp.Depositar(500);
Console.WriteLine($"Saldo após depósito da Conta Poupança: {cp.CalcularSaldo()}");
cp.Sacar(500);
Console.WriteLine($"Saldo após sacar da Conta Poupanca: {cp.CalcularSaldo()}");
}
}
Modelo/ContaBancaria.cs
class ContaBancaria
{
protected double Saldo { get; set; }
public ContaBancaria(double saldoInicial = 0)
{
Saldo = saldoInicial;
}
public virtual void Depositar(double valor)
{
if(valor > 0)
{
Saldo += valor;
}
else
{
throw new ArgumentException("O valor do depósito deve ser maior que 0.");
}
}
public virtual void Sacar(double valor)
{
if (valor > 0)
{
if (Saldo > valor)
{
Saldo -= valor;
}
else{
throw new ArgumentException("Saldo insuficiente.");
}
}
else
{
throw new ArgumentException("O valor de saque deve ser maior que 0.");
}
}
public virtual double CalcularSaldo()
{
return Saldo;
}
}
Modelo/ContaCorrente.cs
class ContaCorrente : ContaBancaria
{
private double TaxaManutencao { get; set; }
public ContaCorrente(double saldoInicial = 0, double taxaManutencao = 0) : base(saldoInicial)
{
TaxaManutencao = taxaManutencao;
}
public override void Sacar(double valor)
{
base.Sacar(valor + TaxaManutencao);
}
}
Modelo/ContaPoupanca.cs
class ContaPoupanca : ContaBancaria
{
private double TaxaRendimento { get; set; }
public ContaPoupanca(double saldoInicial = 0, double taxaRendimento = 0) : base(saldoInicial)
{
TaxaRendimento = taxaRendimento;
}
public override void Sacar(double valor)
{
base.Sacar(valor);
}
public override double CalcularSaldo()
{
return base.CalcularSaldo() * (1 + TaxaRendimento);
}
}