É até melhor, o outro eu endentei errado.
O meu programa não tem ContaCorrente
e nem ContaPoupanca
.
Classe Principal
(é a equivalente a Form1
):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Caelum.CaixaEletronico
{
public partial class Principal : Form
{
private Clientes[] cliente;
private int qtContas = 0;
public Principal()
{
InitializeComponent();
MostraConta();
}
public void MostraConta()
{
if (qtContas != 0)
{
mensagem.Text = "";
comboClientes.Enabled = true;
TextoValor.Enabled = true;
botaoDepositar.Enabled = true;
botaoSaque.Enabled = true;
foreach (Clientes cl in cliente)
{
comboClientes.Items.Add(cl);
}
comboClientes.DisplayMember = "nome";
}
else
{
mensagem.Text = "Não há contas cadastradas.";
comboClientes.Enabled = false;
TextoValor.Enabled = false;
botaoDepositar.Enabled = false;
botaoSaque.Enabled = false;
}
}
private void botaoSaque_Click(object sender, EventArgs e)
{
if (TextoValor.Text !="")
{
try
{
Contas selecionado = (Contas)comboClientes.SelectedItem;
selecionado.Sacar(Convert.ToDouble(TextoValor.Text));
TextoValor.Text = "";
MostraConta();
}
catch (SaldoInsuficienteException exception)
{
MessageBox.Show("Saldo Insuficiente.");
}
catch (ArgumentException exception)
{
MessageBox.Show("Valor inválido para o saque.");
}
TextoValor.Text = "";
}
}
private void botaoDepositar_Click(object sender, EventArgs e)
{
if (TextoValor.Text != "")
{
try
{
Contas selecionado = (Contas)comboClientes.SelectedItem;
selecionado.Depositar(Convert.ToDouble(TextoValor.Text));
TextoValor.Text = "";
MostraConta();
}
catch (ArgumentException exception)
{
MessageBox.Show("Valor inválido para o saque.");
}
}
}
private void comboClientes_SelectedIndexChanged(object sender, EventArgs e)
{
Contas selecionado = (Contas)comboClientes.SelectedItem;
textoNumeroConta.Text = Convert.ToString(selecionado.numero);
TextoSaldo.Text = Convert.ToString(selecionado.Saldo);
}
private void button1_Click(object sender, EventArgs e)
{
CadastroContas cadastro = new CadastroContas(this);
cadastro.ShowDialog();
}
public void CadastrarConta(string nome, int idade, double saldo)
{
if (this.qtContas == 0)
{
this.cliente = new Clientes[1];
}
else
{
Array.Resize(ref this.cliente, (qtContas + 1));
}
this.cliente[this.qtContas] = new Clientes(nome, idade, new Contas());
this.cliente[this.qtContas].conta.numero = (this.qtContas + 1);
this.cliente[this.qtContas].conta.Depositar(saldo);
this.qtContas++;
}
}
}
Classe Clientes
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Caelum.CaixaEletronico
{
public class Clientes
{
public int idade;
public string nome;
public Contas conta;
public Clientes(string nome, int idade, Contas conta)
{
this.conta = conta;
this.nome = nome;
this.idade = idade;
}
}
}
Classe Contas
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Caelum.CaixaEletronico
{
public class Contas
{
public int numero;
public double Saldo { get; protected set; }
public void Sacar(double valor)
{
if (valor <= 0)
{
throw new ArgumentException();
}
if (this.Saldo >= valor)
{
this.Saldo -= valor;
}
else
{
throw new SaldoInsuficienteException();
}
}
public void Depositar(double valor)
{
if (valor <= 0)
{
throw new ArgumentException();
}
else
{
this.Saldo += valor;
}
}
}
}
Classe CadastroContas
:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Caelum.CaixaEletronico
{
public partial class CadastroContas : Form
{
private Principal aplicacaoPrincipal;
public CadastroContas(Principal principal)
{
InitializeComponent();
this.aplicacaoPrincipal = principal;
}
private void Cadastro_Click(object sender, EventArgs e)
{
if (textoNome.Text != "" &&
textoIdade.Text != "" &&
textoSaldo.Text != "")
{
aplicacaoPrincipal.CadastrarConta(textoNome.Text,
Convert.ToInt32(textoIdade.Text),
Convert.ToDouble(textoSaldo.Text));
MessageBox.Show("Cadastro Efetuado.");
aplicacaoPrincipal.MostraConta();
this.Close();
}
else
{
MessageBox.Show("Para efetuar o cadastro é necessário\npreencher todos os campos.");
}
}
private void Fechar_Click(object sender, EventArgs e)
{
this.Close();
}
}
}