0
respostas

Resposta - Exercício 3

Classe BankAccount:

namespace exercise71.Models;

internal class BankAccount
{
    protected double Balance { get; set; }

    protected BankAccount(double balance)
    {
        Balance = balance;
    }

    public virtual void Deposit(double value)
    {
        Balance += value;
    }

    public virtual void Withdraw(double value)
    {
        Balance -= value;
    }

    public virtual double CalculateBalance()
    {
        return Balance;
    }
}

Classe CurrentAccount:

namespace exercise71.Models;

internal class CurrentAccount : BankAccount
{
    private double _maintenanceFee { get; set; }

    public CurrentAccount(double balance, double maintenanceFee)
        : base(balance)
    {
        _maintenanceFee = maintenanceFee;
    }

    public override void Withdraw(double value)
    {
        base.Withdraw(value + _maintenanceFee);
    }
}

Classe SavingsAccount:

namespace exercise71.Models;

internal class SavingsAccount : BankAccount
{
    private double _rateOfReturn { get; set; }

    public SavingsAccount(double balance, double rateOfReturn)
        : base(balance)
    {
        _rateOfReturn = rateOfReturn;
    }

    public override double CalculateBalance()
    {
        return base.CalculateBalance() * (1 + _rateOfReturn);
    }
}

Instâncias:

using exercise71.Models;

CurrentAccount currentAccount = new CurrentAccount(3000, 30);
currentAccount.Withdraw(100);
Console.WriteLine($"Remaining balance: ${currentAccount.CalculateBalance():F2}");

SavingsAccount savingsAccount = new SavingsAccount(3000, 0.15);
Console.WriteLine($"Remaining balance: ${savingsAccount.CalculateBalance():F2}");