O codigo executa porém após eu inserir os valores no CadastroDeContas e clicar em Cadastrar o método AdicionaConta do Form1 apresenta erro, informando: NullReferenceException was unhandled.
Conta
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WSouza.CaixaEletronico2.Modelo.Contas
{
public abstract class Conta
{
public string Titular;
public int Agencia;
public int Numero;
public double Saldo { get; protected set; }
public abstract void Saque(double valor);
public void Deposito(double valor)
{
if(valor > 0)
{
this.Saldo += valor;
}
}
public void Transfere(Conta conta, double valor)
{
this.Saque(valor);
conta.Deposito(valor);
}
}
}
ContaCorrente
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WSouza.CaixaEletronico2.Modelo.Contas
{
class ContaCorrente : Conta
{
public override void Saque(double valor)
{
if(valor >= this.Saldo)
{
this.Saldo -= valor;
}
}
}
}
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;
using WSouza.CaixaEletronico2.Modelo.Contas;
namespace WSouza.CaixaEletronico2
{
public partial class Form1 : Form
{
private Conta[] contas;
private int qtdContas;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void comboCliente_SelectedIndexChanged(object sender, EventArgs e)
{
Conta contaSelecionada = (Conta)comboCliente.SelectedItem;
this.MostraConta(contaSelecionada);
}
private void MostraConta(Conta conta)
{
textTitular.Text = conta.Titular;
textNumero.Text = Convert.ToString(conta.Numero);
textAgencia.Text = Convert.ToString(conta.Agencia);
textAgencia.Text = Convert.ToString(conta.Saldo);
textValor.Text = " ";
}
public void AdicionaConta(Conta cc)
{
this.contas[this.qtdContas] = cc;
this.qtdContas++;
comboCliente.Items.Add(contas);
}
private void btnAdiconarConta_Click(object sender, EventArgs e)
{
CadastroDeContas cadastro = new CadastroDeContas(this);
cadastro.ShowDialog();
}
}
}
CadastroDeContas
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;
using WSouza.CaixaEletronico2.Clientes;
using WSouza.CaixaEletronico2.Modelo.Contas;
namespace WSouza.CaixaEletronico2
{
public partial class CadastroDeContas : Form
{
private Form1 aplicacaoPrincipal;
public CadastroDeContas(Form1 aplicacaoPrincipal)
{
this.aplicacaoPrincipal = aplicacaoPrincipal;
InitializeComponent();
}
private void btnCadastrar_Click(object sender, EventArgs e)
{
ContaCorrente cc = new ContaCorrente();
cc.Numero = Convert.ToInt32(textNumCad.Text);
cc.Agencia = Convert.ToInt32(textAgenciaCad.Text);
cc.Titular = textTitularCad.Text;
this.aplicacaoPrincipal.AdicionaConta(cc);
}
}
}