1
resposta

Dúvida com a utilização do Objeto TITULAR

Boa tarde a todos ! Vi em um exercicio anterior que funcionou da forma que meu código está atualmente ...

FORM2.CS
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 ClienteConta
{
    public partial class Form2 : Form
    {
        Conta [] contas;
        /*private Conta conta;
        ContaPoupanca c4 = new ContaPoupanca();*/
        public Form2()
        {
            InitializeComponent();
        }

        protected void Form2_Load_1(object sender, EventArgs e)
        {

            Conta contaAlex = new Conta();
            // EIS MINHA DÚVIDA
            contaAlex.Titular = new Cliente();
            contaAlex.Titular.Nome = "Alex";
            contaAlex.Numero = 1;

            this.contas = new Conta[2];
            contas[0] = contaAlex;
            comboContas.Items.Add(contaAlex.Titular.Nome);
            textoTitular.Text = contaAlex.Titular.Nome;
            textoNumero.Text = Convert.ToString(contaAlex.Numero);
            textoSaldo.Text = Convert.ToString(contaAlex.Saldo);

            /*
            foreach(Conta conta in contas)
            {
                comboContas.Items.Add(conta.Titular.Nome);


            }
            */
        }


        private void btEnviar_Click_1(object sender, EventArgs e)
        {
           /* c4.Titular.Nome = "Alex";
            String Sacar = textoValor.Text;
            String Saldo = textoSaldo.Text;
            //conta.depositarValor(Convert.ToDouble(Saldo));
           // conta.sacarValor(Convert.ToDouble(Sacar));*/
        }


        private void button2_Click_1(object sender, EventArgs e)
        {
          //  MessageBox.Show("Saldo: " + conta.Saldo);
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }

}

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

namespace ClienteConta
{
    class Conta
    {
        public Cliente Cliente { get; set;}
        public int Numero { get; set; }
    //Cliente Titular Criado
        public Cliente Titular { get; set; }
        public double Saldo { get; protected set; }

        public bool sacarValor(double valor)
        {
            if (valor < 0 || valor > this.Saldo)
            {
                return false;
            }
            else

                if (this.Titular.EhMaiorDeIdade)
            {
                Saldo -= valor;
                return true;
            }

            else
            if (valor <= 200)
            {
                Saldo -= valor;
                return true;
            }
            else
            {
                return false;
            }
        }

        public virtual void depositarValor(double valor)
        {
            this.Saldo += valor;
        }

        public void transferirValor(double valor, Conta ContaDestino)
        {
            this.sacarValor(valor);
            ContaDestino.depositarValor( valor);
        }

        public void preencherContas(Conta Conta1,Conta Conta2) {
            //preenchendo conta
            Conta2.Saldo = 1000000;
            Conta1.Saldo = 200;
            Conta1.Numero = 2525;

        }



    }
}

Ali onde comentei "EIS MINHA DÚVIDA" não entendi a necessidade da criação do novo cliente em contaAlex.Titular. Ja que na classe cliente conta fui criado um Titular do tipo Cliente. E no exemplo o professor consegue atribuir a contaNome.Titular = "UMA STRING" como isso é possível ? Quando faço isso já ocorre um erro referente ao valor receber null como resposta e contaNome.Titular é um objeto, como foi possível atribuir uma string ?;

1 resposta

Oi Luciano, tudo bom?

Acredito que para focar nos conceitos, a composição tenha sido ignorada tornando os exemplos mais simples e mais direcionados. Se você reparar, no zip do projeto do curso pronto até esse capitulo, foi continuado com composição pra deixar de exemplo =)

Qualquer problema é só falar.

Abraço

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