Estou tentando lançar uma Exception na classe Conta pra pegar caso a conta do combobox1 for igual a conta do combobox2.
Criei uma nova classe ContaIgualException : Exception e implementei o seguinte código no Botão Transferir, pois não sabia como implementar na classe Conta .Mas esse método não funcionou como queria
if (ContaSelecionada == ContaSelecionada2)
{
throw new ContaIgualExcepiton();
}
catch (ContaIgualExcepiton)
{
MessageBox.Show("Seleciona outro destinatario para a transferencia");
}
public partial class Form1 : Form
{
Conta[] contas = new Conta[3];
TotalizadorDeContas SaldoTotal = new TotalizadorDeContas();
public Form1()
{
InitializeComponent();
}
public void TotalSaldo()
{
foreach(Conta conta in contas)
{
SaldoTotal.Adiciona(conta);
}
textSaldoTotal.Text = Convert.ToString(SaldoTotal.SaldoTotal);
foreach (Conta conta in contas)
{
SaldoTotal.Retira(conta);
}
}
private void Form1_Load(object sender, EventArgs e)
{
ContaCorrente c1 = new ContaCorrente();
c1.Titular = new Cliente();
c1.Titular.Nome = "Alexander";
c1.Titular.CPF = "123456789 - 00";
c1.Titular.Emancipado = true;
c1.Titular.Idade = 18;
c1.Numero = 1;
contas[0] = c1;
ContaPoupanca c2 = new ContaPoupanca();
c2.Titular = new Cliente();
c2.Titular.Nome = "Bassani";
c2.Titular.CPF = "987654321 - 00";
c2.Titular.Emancipado = true;
c2.Titular.Idade = 18;
c2.Numero = 3;
contas[1] = c2;
ContaInvestimento c3 = new ContaInvestimento();
c3.Titular = new Cliente();
c3.Titular.Nome = "Amaral";
c3.Titular.CPF = "147896325 - 00";
c3.Titular.Emancipado = true;
c3.Titular.Idade = 18;
c3.Numero = 3;
contas[2] = c3;
foreach(Conta conta in contas)
{
comboContas.Items.Add(conta.Titular.Nome);
comboTransfere.Items.Add(conta.Titular.Nome);
}
this.TotalSaldo();
}
private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
{
int IndiceSelecionada = comboContas.SelectedIndex;
Conta ContaSelecionada = contas[IndiceSelecionada];
textNome.Text = ContaSelecionada.Titular.Nome;
textNumero.Text = Convert.ToString(ContaSelecionada.Numero);
textCPF.Text = Convert.ToString(ContaSelecionada.Titular.CPF);
textSaldo.Text = Convert.ToString(ContaSelecionada.Saldo);
textRendimento.Text = Convert.ToString(ContaSelecionada.RendimentoAnual());
}
private void Sacar_Click(object sender, EventArgs e)
{
int IndiceSelecionada = comboContas.SelectedIndex;
Conta ContaSelecionada = contas[IndiceSelecionada];
string numero = textValor.Text;
double valor = Convert.ToDouble(numero);
try
{
ContaSelecionada.Sacar(valor);
MessageBox.Show("Dinheiro Liberado");
textSaldo.Text = Convert.ToString(ContaSelecionada.Saldo);
textRendimento.Text = Convert.ToString(ContaSelecionada.RendimentoAnual());
this.TotalSaldo();
}
catch(SaldoInsuficienteException)
{
MessageBox.Show("Saldo insuficiente");
}
catch (ArgumentException)
{
MessageBox.Show("Não é possível sacar um valor negativo");
}
this.TotalSaldo();
}
private void Depositar_Click(object sender, EventArgs e)
{
int IndiceSelecionada = comboContas.SelectedIndex;
Conta ContaSelecionada = contas[IndiceSelecionada];
string numero = textValor.Text;
double valor = Convert.ToDouble(numero);
try
{
ContaSelecionada.Deposita(valor);
MessageBox.Show("Dinheiro Depositado");
textSaldo.Text = Convert.ToString(ContaSelecionada.Saldo);
textRendimento.Text = Convert.ToString(ContaSelecionada.RendimentoAnual());
this.TotalSaldo();
}
catch (ArgumentException)
{
MessageBox.Show("Não é possível sacar um valor negativo");
}
}
private void Transferir_Click(object sender, EventArgs e)
{
int IndiceSelecionado = comboContas.SelectedIndex;
Conta ContaSelecionada = contas[IndiceSelecionado];
int IndiceSelecionado2 = comboTransfere.SelectedIndex;
Conta ContaSelecionada2 = contas[IndiceSelecionado2];
string numero = textValor.Text;
double valor = Convert.ToDouble(numero);
if (ContaSelecionada == ContaSelecionada2)
{
throw new ContaIgualExcepiton();
}
try
{
ContaSelecionada.Transfere(valor, ContaSelecionada2);
MessageBox.Show("Dinheiro Transferido de "+ContaSelecionada.Titular.Nome," \npara "+ContaSelecionada2.Titular.Nome);
textSaldo.Text = Convert.ToString(ContaSelecionada.Saldo);
textRendimento.Text = Convert.ToString(ContaSelecionada.RendimentoAnual());
this.TotalSaldo();
}
catch (SaldoInsuficienteException)
{
MessageBox.Show("Saldo insuficiente para transferencia");
}
catch (ArgumentException)
{
MessageBox.Show("Não é possível transferir um valor negativo");
}
catch (ContaIgualExcepiton)
{
MessageBox.Show("Seleciona outro destinatario para a transferencia");
}
}
private void TributosTotal_Click(object sender, EventArgs e)
{
TotalizadorDeTributos Tributos = new TotalizadorDeTributos();
ContaInvestimento ci = new ContaInvestimento();
ContaPoupanca cp = new ContaPoupanca();
ci.Titular = new Cliente();
cp.Titular = new Cliente();
cp.Titular.Emancipado = true;
ci.Titular.Emancipado = true;
cp.Titular.CPF = "0000";
ci.Titular.CPF = "0000";
ci.Deposita(1500.0);
cp.Deposita(1000.0);
Tributos.Acumula(ci);
Tributos.Acumula(cp);
MessageBox.Show("Tributos: " + Tributos.Total);
Tributos.Retira(ci);
Tributos.Retira(cp);
}
private void ContasCorrente_Click(object sender, EventArgs e)
{
ContaCorrente conta = new ContaCorrente();
MessageBox.Show("Proxima Contas:" + conta.ProximaConta());
MessageBox.Show("Numero Contas:" + conta.NumeroDeConta());
conta.ProximaConta();
}
}
abstract class Conta
{
public Cliente Titular { get; set; }
public int Numero { get; set; }
public double Saldo { get; protected set; }
public abstract void Sacar(double valor);
public void Deposita(double valor)
{
if (valor < 0)
{
throw new ArgumentException("Impossivel Depositar Valor Negativo");
}
else
{
this.Saldo += valor;
}
}
public void Transfere(double valor, Conta destinatario)
{
if (valor > this.Saldo)
{
throw new SaldoInsuficienteException();
}
if (valor < 0)
{
throw new ArgumentException("Impossivel Tranferir Valor Negativo");
}
else
{
this.Sacar(valor);
destinatario.Deposita(valor);
}
}
public virtual void AtualizaSaldo(double taxa)
{
this.Saldo -= this.Saldo * taxa;
}
public double RendimentoAnual()
{
double SaldoDoMes = this.Saldo;
for(int i = 1; i <= 12; i++)
{
SaldoDoMes *= 1.007;
}
double Rendimento = SaldoDoMes - this.Saldo;
return Rendimento;
}
}
class Cliente
{
public string Nome { get; set; }
public Cliente(string nome)
{
this.Nome = nome;
}
public Cliente() { }
public string CPF { get; set; }
public string RG { get; set; }
public string Endereco { get; set; }
public int Idade { get; set; }
public bool Emancipado { get; set; }
public bool PodeAbrirConta
{
get
{
var Maior18 = this.Idade >= 18;
var PossuiCPF = !string.IsNullOrEmpty(this.CPF);
var EEmancipado = this.Emancipado;
return (Maior18 || Emancipado) && PossuiCPF;
}
}
}