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}");