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

Dúvida no Ex. 1 da Aula 3 - Mão na Massa - Windows Forms

Pessoal estou com um problema. Meus atributos estão como privados e as propriedades publicas como ensinado e na aula 1, minha classe cliente esta com construtor pedindo argumento na hora de instancia-la. tenho a refenrecia da classe cliente na classe conta como enssinado na aula anterior public Cliente Titular{get; set;} porem na hora de colocar o conta.Titular = "Vitor"; ele da erro. E na propriedade Numero tbm. Oque pode estar acontecendo?

class Cliente {

region Atributos

private string nome; private string cpf; private string rg; private string endereco;

endregion

region Propriedades

public string Nome{ get; set; }

public string Cpf{ get; set; }

public string Rg{ get; set; }

public string Endereco{ get; set; }

endregion

//Metodo Construtor public Cliente(string nome) { this.Nome = nome; } }

class Conta {

region Atributos

private int numero; private double saldo;

public Cliente titular;

endregion

region Propriedades

public int Numero { get; set; } public double Saldo{ get; set; }

public Cliente Titular { get; set; }

endregion

public void Sacar(double valor) { this.saldo -= valor; }

public void Deposita(double valor) { this.saldo += valor; } }

private void Form1_Load(object sender, EventArgs e) { Conta conta = new Conta(); conta.Titular = "Vitor"; conta.Deposita(250.0); conta.Numero(1);

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

2 respostas
solução!

Fala Juliano, tudo bem?

Antes de mais nada: se você tem propriedades com get e set do jeito que tem em sua classe, você não precisa declarar atributos. Pode tirar os atributos das duas classes e manter somente as propriedades :)

Agora, com relação ao seu código. Olha essa linha:

conta.Titular = "Vitor";

Você está tentando atribuir uma string à propriedade Titular. Para isso funcionar, a propriedade teria que ser do tipo string, e qual o tipo dela? Cliente! Então, o que você tem que fazer é o seguinte:

conta.Titular = new Cliente();
conta.Titular.Nome = "Vitor";

Aí sim irá funcionar! Primeiro você inicializa a propriedade com um novo cliente e em seguida você atribui um nome à ele.

Agora, com relação ao Numero:

conta.Numero(1);

Mas pera...abrir e fechar parenteses desse jeito é quando você quer chamar um método! E Numero é uma propriedade. Então, o certo é:

conta.Numero = 1;

Veja aí se te ajuda :)

Problema resolvido Gabriel, muito obrigado. A falta de atenção não deixou eu notar que a propriedade Numero estava com o valor entre parênteses, e a classe cliente deveria ser chamada através da propriedade Titular.