public class Conta
{
interface IEstadoDaConta
{
void Saca(Conta conta, double valor);
void Deposita(Conta conta, double valor);
}
public double Saldo { get; set; }
public double Valor { get; set; }
public DateTime DataAbertura { get; set; }
protected IEstadoDaConta EstadoAtualDaConta; // esta dando erro
//public void Deposita(double valor)
//{
// Saldo += valor;
//}
class Positivo : IEstadoDaConta
{
public void Deposita(Conta conta, double valor)
{
conta.Saldo += valor * 0.98;
}
public void Saca(Conta conta, double valor)
{
conta.Saldo -= valor;
if (conta.Saldo < 0)
{
// COMO FICA ISSO AQUI
}
}
}
class Negativo : IEstadoDaConta
{
public void Deposita(Conta conta, double valor)
{
conta.Saldo += valor * 0.95;
if (conta.Saldo > 0)
{
// COMO FICA ISSO AQUI
}
}
public void Saca(Conta conta, double valor)
{
throw new Exception("Sua conta esta no vermelho. Nao e possivel sacar.");
}
}
public void Saca(double valor)
{
EstadoAtualDaConta.Saca(this, valor);
}
public void Deposita(double valor)
{
EstadoAtualDaConta.Deposita(this, valor);
}