Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida Aula 06 - "Banco com várias contas"

Fiz o exercício e ele compilou, porém no lugar do nome do cliente ele mostra "CaixaEletronico.Cliente". Todo o resto funciona corretamente.

Baixei os arquivos da unidade, porém ele não contém a resolução desse exercício.

Meu código:

//Form1.cs
namespace CaixaEletronico
{
    public partial class Form1 : Form
    {
        Conta[] contas;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }



        private void Form1_Load(object sender, EventArgs e)
        {
            contas = new Conta[2];
            Cliente fabio = new Cliente("Fabio Jordão");
            contas[0] = new Conta();
            contas[0].Numero = 1;
            contas[0].Titular = fabio;
            contas[0].Deposita(6700);

            contas[1] = new Conta();
            Cliente joao = new Cliente("João da Silva");
            contas[1].Numero = 2;
            contas[1].Titular = joao;
            contas[1].Deposita(100);

            foreach (Conta conta in contas)
            {
                ComboContas.Items.Add(conta.Titular);
            }

        }

        private void ComboContas_SelectedIndexChanged(object sender, EventArgs e)
        {
            int indiceSelecionado = ComboContas.SelectedIndex;
            Conta contaSelecionada = contas[indiceSelecionado];

            textoTitular.Text = contaSelecionada.Titular.Nome;
            textoNumero.Text = Convert.ToString(contaSelecionada.Numero);
            TextoSaldo.Text = Convert.ToString(contaSelecionada.Saldo);

        }
    }

////////////////////////////////////////---------------------------------------------

class Banco
    {
        private Conta[] contas = new Conta[10];

        private int quantidade;

        public void Adiciona (Conta conta)
        {
            this.contas[this.quantidade] = conta;
            this.quantidade++;
        }
    }

////////////////////////////////////////---------------------------------------------

class Cliente
    {
        public string Nome { get; set; }
        public string rg;
        public string cpf;
        public string endereco;
        public int idade;

        public Cliente (string nomeCliente)
        {
            this.Nome = nomeCliente;
        }

        public bool EhMaiorDeIdade()
        {
            return this.idade >= 18;
        }
    }

////////////////////////////////////////---------------------------------------------

class Conta
    {
        public int Numero { get; set; }
        public Cliente Titular { get; set; }
        public double Saldo { get; protected set; }

        public void Deposita(double valorASerDepositado)
        {
            if (valorASerDepositado > 0)
            {
                this.Saldo += valorASerDepositado;
            }
        }

        public virtual bool Saca(double valorASerSacado)
        {
            if (valorASerSacado > this.Saldo || valorASerSacado < 0)
            {
                return false;
            }
            else
            {
                if (this.Titular.EhMaiorDeIdade())
                {
                    this.Saldo -= valorASerSacado;
                    return true;
                }
                else
                {
                    if (valorASerSacado <= 200)
                    {
                        this.Saldo -= valorASerSacado;
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
            }
        }

        public void Transfere(double valor, Conta destino)
        {
            this.Saca(valor);
            destino.Deposita(valor);
        }

        public double CalculaRendimentoAnual()
        {
            double saldoNaqueleMes = this.Saldo;

            for (int i = 0; i < 12; i++)
            {
                saldoNaqueleMes = saldoNaqueleMes * 1.007;
            }

            double rendimento = saldoNaqueleMes - this.Saldo;

            return rendimento;
        }
    }
3 respostas

Oi Fabio, tudo bom?

Ele te mostra o nome completo da classe, pois este é o padrão do C# ao imprimir um objeto.

No nosso caso, estamos tentando imprimir um objeto da classe Cliente que está no namespace CaixaEletronico.

Caso você queira mudar a forma com que o C# escreve seus objetos, você pode implementar o método ToString da sua classe!

Algo como:

class Cliente
    {
        public string Nome { get; set; }
        public string rg;
        public string cpf;
        public string endereco;
        public int idade;

        public Cliente (string nomeCliente)
        {
            this.Nome = nomeCliente;
        }

        public bool EhMaiorDeIdade()
        {
            return this.idade >= 18;
        }
    }
    public string ToString(){
        return "Nome:  "+Nome; // aqui adicionamos o que o c# deve imprimir =)
    }

Qualquer dificuldade, compartilha com a gente!

Abraço e bons estudos

solução!

Boa noite, Fabio.

Tente colocar a propriedade Nome no foreach do Form1_Load:

foreach (Conta conta in contas)  {
                ComboContas.Items.Add(conta.Titular.Nome);
}

Obrigado!