Caros, o resultado da Conta de estudante está zerado. Poderiam dar uma ajuda?
public class Program //ProcessadorDeInvestimentos
{
static void Main(string[] args)
{
IList<ContaComum> contas = ContasDoBanco();
foreach (ContaComum conta in contas)
{
conta.somaInvestimento();
Console.WriteLine("Novo saldo: " + conta.Saldo());
}
Console.ReadLine();
}
private static IList<ContaComum> ContasDoBanco()
{
List<ContaComum> contas = new List<ContaComum>();
contas.Add(umaContaComum(100));
contas.Add(umaContaComum(150));
contas.Add(umaContaEstudante(200));
return contas;
}
private static ContaEstudante umaContaEstudante(double saldo)
{
ContaEstudante conta = new ContaEstudante();
conta.Deposita(saldo);
return conta;
}
private static ContaComum umaContaComum(double saldo)
{
ContaComum conta = new ContaComum();
conta.Deposita(saldo);
return conta;
}
}
class ContaEstudante : ContaComum
{
private ManipuladorDeSaldo manipuladorEstudante;
public int Milhas { get; private set; }
public ContaEstudante()
{
this.manipuladorEstudante = new ManipuladorDeSaldo();
}
public override void Deposita(double valor)
{
this.manipuladorEstudante.Deposita(valor);
this.Milhas += (int)valor;
}
}
class ContaComum
{
private ManipuladorDeSaldo manipulador;
public ContaComum()
{
this.manipulador = new ManipuladorDeSaldo();
}
public virtual void Deposita(double valor)
{
this.manipulador.Deposita(valor);
}
public void Saca(double valor)
{
this.manipulador.Saca(valor);
}
public double Saldo()
{
return this.manipulador.Saldo;
}
public void somaInvestimento()
{
this.manipulador.SomaInvestimento(1.1);
}
}
class ManipuladorDeSaldo
{
public double Saldo { get; private set; }
public void Deposita(double valor)
{
this.Saldo += valor;
}
public void Saca(double valor)
{
if (valor <= this.Saldo)
{
this.Saldo -= valor;
}
else
{
throw new ArgumentException();
}
}
public void SomaInvestimento(double taxa)
{
this.Saldo *= taxa;
}
}