Ao usar new Conta obtenho uma mensagem de erro:
Não é possível criar uma instância da classe abstract ou interface 'Conta', mesmo mudando para ContaCorrente obtenho um erro diferente
"+ $exception {"BitPixel.CaixaEletronico.Contas.ContaCorrente é inacessível por causa do seu nível de proteção. Apenas tipos públicos podem ser processados."} System.InvalidOperationException "
using CaixaEletronico.Classes; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using BitPixel.CaixaEletronico.Usuarios; namespace BitPixel.CaixaEletronico.Contas { public abstract class Conta : Object { public int Numero { get; set; } public double Saldo { get; protected set; } //public BitPixel.CaixaEletronico.Usuarios.Cliente Titular { get; set; } private Cliente Titular { get; set; } public int Agencia { get; private set; } public int Tipo { get; set; } // 1==> Conta corrente e 2==> Conta Poupança public abstract void Saca(double valor);
public virtual void Deposita(double valor) { if (valor >= 0) { this.Saldo += valor; } }
public virtual string ToString(string cliente) { return Titular.Nome; }
public virtual void Transfere(double valor, Conta conta) {
if (valor >= 0 && valor <= this.Saldo ) { this.Saca(valor); conta.Deposita(valor); }
}
} }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace BitPixel.CaixaEletronico.Contas { class ContaCorrente : Conta { public static int TotalDeContas { get; private set; }
public ContaCorrente() { ContaCorrente.TotalDeContas++; }
public static int ProximoNumero() { return ContaCorrente.TotalDeContas +1; }
public override void Saca(double valor) {
if (valor < 0) { throw new ArgumentException(); }
if (this.Saldo >= valor) { this.Saldo -= valor + 0.10; } else { throw new SaldoInsuficienteException(); }
} } }