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 !