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

Isso está correto?

Bom dia pessoa,

Gostaria de saber se isso está correto:

        private void Form1_Load(object sender, EventArgs e)
        {
            Conta c = new Conta() { Numero = 1, Titular = "Victor", _Saldo = 250 }; //titular coloco aqui?
            Cliente c1 = new Cliente() { nome = "Victor" }; //aqui?

            c.Titular = c1;
            textoTitular.Text = Convert.ToString(c.Titular);
            textoSaldo.Text = Convert.ToString(c.Saldo);
            textoNumero.Text =Convert.ToString(c.Numero);


            textoTitular.Text = Convert.ToString(c.Titular.nome);



        }

ps: no visual studio tem uma mensagem dizendo assim: "cannot convert type string to CaixaEletron.Cliente."

9 respostas
solução!

Oi Taina, tudo bom?

O problema é que no nosso modelo, estamos dizendo que o Titular é um cliente, certo?

Se o titular É um cliente, então precisamos passar alguém do tipo cliente no nosso construtor.

Acredito que a ideia seja algo do tipo:

            Cliente c1 = new Cliente() { nome = "Victor" }; //Definimos o titular com um nome
             Conta c = new Conta() { Numero = 1, Titular = c1, _Saldo = 250 }; //colocamos a instancia de titular aqui

Espero ter ajudado =)

Abraço e bons estudos

andré, fiz isso e mesmo assim nao vai

Opa, que aconteceu?

Aguardo retorno =)

Se você puder, compartilha com a gente o conteudo da sua classe Conta também, assim fica mais facil encontrar possiveis problemas!

Abraço

oi andré, aqui:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CaixaEletron
{
    class Conta
    {
        public int Numero { get; set; }
        public Cliente Titular { get; set; }
        public double Saldo { get; private set; }

        public double _Saldo
        {
            set
            {
                this.Saldo = value;
            }
        }


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

        public 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;
        }
    }
}

outra classe


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CaixaEletron
{
    class Cliente
    {
        public string nome;
        public string rg;
        public string cpf;
        public string endereco;
        public int idade;

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

form

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 CaixaEletron { public partial class Form1 : Form { private Conta conta; private Cliente cliente;

public Form1() { InitializeComponent(); }

private void Form1_Load(object sender, EventArgs e) { this.conta = new Conta(); this.cliente = new Cliente() { nome = "Victor" }; this.conta.Titular = "Victor"; this.conta.Numero = 1; this.conta.Deposita(250.0);

textoNumero.Text = Convert.ToString(this.conta.Numero); textoSaldo.Text = Convert.ToString(this.conta.Saldo); textoTitular.Text = Convert.ToString(this.conta.Titular);

/* Conta c = new Conta() { Numero = 1, _Saldo = 250 }; Cliente c1 = new Cliente() { nome = "Victor" };

c.Titular = c1; textoTitular.Text = Convert.ToString(c.Titular); textoSaldo.Text = Convert.ToString(c.Saldo); textoNumero.Text =Convert.ToString(c.Numero); textoTitular.Text = Convert.ToString(c.Titular.nome);

*/ }

private void numero_TextChanged(object sender, EventArgs e) {

}

private void button1_Click(object sender, EventArgs e) {

} } }

```

o form saiu estranho:


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 CaixaEletron
{
    public partial class Form1 : Form
    {
        private Conta conta;
        private Cliente cliente;


        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            this.conta = new Conta();
            this.cliente = new Cliente() { nome = "Victor" };
            this.conta.Titular = "Victor";
            this.conta.Numero = 1;
            this.conta.Deposita(250.0);

            textoNumero.Text = Convert.ToString(this.conta.Numero);
            textoSaldo.Text = Convert.ToString(this.conta.Saldo);
            textoTitular.Text = Convert.ToString(this.conta.Titular);

            /*
            Conta c = new Conta() { Numero = 1,  _Saldo = 250 };
            Cliente c1 = new Cliente() { nome = "Victor" };

            c.Titular = c1;
            textoTitular.Text = Convert.ToString(c.Titular);
            textoSaldo.Text = Convert.ToString(c.Saldo);
            textoNumero.Text =Convert.ToString(c.Numero);
            textoTitular.Text = Convert.ToString(c.Titular.nome);

           */                      
        }

        private void numero_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}

ps: agora deu andré. faltei retirar a linha que estava errada.

mas nao entendi muito bem porque o anterior nao dava. noc caso o titular.. ja que é um atributo de Conta, mesmo que do tipo Cliente!

Conseguiu, Tainá? Porque pelo seu código você está fazendo isso:

this.conta.Titular = "Victor";

E isso está errado. Titular é um objeto do tipo Cliente, não pode receber uma string.

Da mesma forma que aqui:

textoTitular.Text = Convert.ToString(this.conta.Titular);

Você não pode utilizar a função de converter para string um objeto do tipo Cliente.

Então Taina, como o Bruno disse. Isso tudo aconteceu porque o Titular agora é do tipo Cliente:

        public Cliente Titular { get; set; }// aqui estamos dizendo que Titular é do tipo Cliente

Isso significa que a gente não pode mais colocar uma simples string lá dentro:

this.conta.Titular = "Victor"; // essa linha n funciona mais

Agora precisamos criar um cliente novo:

Cliente cliente = new Cliente();

Para poder dar um nome pra ele:

cliente.Nome = "Vitor";

E , finalmante, dizer que esse Cliente novo, com o nome Vitor, é o titular da nossa conta:

Cliente cliente = new Cliente();
cliente.Nome = "Vitor";

Conta conta = new Conta();
conta.Titular = cliente;

Espero que tenha ficado mais claro =)

Qualquer dificuldade, compartilha com a gente!

Abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software