O saque e o deposito está sendo efetuado em todas as contas existentes, como posso resolver esse problema ?
O saque e o deposito está sendo efetuado em todas as contas existentes, como posso resolver esse problema ?
Oi Wanderley,
Precisamos ver o seu código para saber o que está acontecendo.
Coloque aqui a sua classe Form.cs e a classe Conta.cs
public partial class Form1 : Form
{
Conta[] contas;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
contas = new Conta[2];
contas[0] = new ContaPoupanca();
contas[0].Titular = "Wanderley Soares";
contas[0].Numero = 1;
contas[0].Deposito(90000.0);
contas[1] = new ContaPoupanca();
contas[1].Titular = "Caroline Prado";
contas[1].Numero = 2;
contas[1].Deposito(10000.0);
foreach(Conta conta in contas)
{
comboContas.Items.Add(conta.Titular);
}
foreach(Conta conta in contas)
{
destinoDaTransferencia.Items.Add(conta.Titular);
}
}
private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
{
this.MostrarConta();
}
private void btnSacar_Click(object sender, EventArgs e)
{
foreach (Conta conta in contas)
{
string valorSacar = textValor.Text;
double valorDoSaque = Convert.ToDouble(valorSacar);
conta.Sacar(valorDoSaque);
this.MostrarConta();
MessageBox.Show("Saque efetuado com sucesso ! No valor de: " + valorDoSaque);
}
}
private void btnDepositar_Click(object sender, EventArgs e)
{
foreach (Conta conta in contas)
{
string valorDeposito = textValor.Text;
double deposito = Convert.ToDouble(valorDeposito);
conta.Deposito(deposito);
this.MostrarConta();
MessageBox.Show("Deposito efetuado com sucesso ! Valor depositado: " + deposito);
}
public void MostrarConta()
{
int indiceItemSelecionado = comboContas.SelectedIndex;
Conta contaSelecionada = contas[indiceItemSelecionado];
textTitular.Text = contaSelecionada.Titular;
textNumero.Text = Convert.ToString(contaSelecionada.Numero);
textSaldo.Text = Convert.ToString(contaSelecionada.Saldo);
}
}
//Classe Conta
abstract class Conta
{
public string Titular { get; set; }
public double Numero { get; set; }
public double Saldo { get; protected set; }
public void Deposito(double valor)
{
this.Saldo += valor;
}
public void Sacar(double valor)
{
this.Saldo -= valor;
}
}
Olá, Wanderley.
Obrigado pelos códigos. Achei o problema. Seu método de depósito do botão está com um loop percorrendo todas as contas do seu vetor:
private void btnDepositar_Click(object sender, EventArgs e)
{
foreach (Conta conta in contas) // Esse loop está realizando o depósito em todas as contas.
{
string valorDeposito = textValor.Text;
double deposito = Convert.ToDouble(valorDeposito);
conta.Deposito(deposito);
this.MostrarConta();
MessageBox.Show("Deposito efetuado com sucesso ! Valor depositado: " + deposito);
}
}
O depósito deveria ser realizado somente na conta que foi selecionada:
private void btnDepositar_Click(object sender, EventArgs e)
{
// Recupera o índice da conta selecionada para depositar
int indiceItemSelecionado = comboContas.SelectedIndex;
// Recupera a conta selecionada a partir do índice
Conta contaSelecionada = contas[indiceItemSelecionado];
string valorDeposito = textValor.Text;
double deposito = Convert.ToDouble(valorDeposito);
contaSelecionada.Deposito(deposito);
this.MostrarConta();
MessageBox.Show("Deposito efetuado com sucesso ! Valor depositado: " + deposito);
}
O mesmo problema acontece no seu método de saque. Você saca dinheiro de todas as contas ao invés de sacar somente da conta selecionada.
Sugiro que faça o mesmo no método de saque.
Bons estudos!
Muito obrigado !! Deu certo hehe !