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

Duvida classes

Seguinte pessoal, se eu quiser utilizar um método dentro de uma classe, e um dos parâmetros seja um dado de outra classe, mas que esteja atribuído dentro dessa. exemplo: crio uma classe conta que tenha os objetos saldo, titular, e outra classe chamada Cliente, agora vou criar o método sacar, e quero alem de utilizar o if para verificar o saldo, quero usar tb para verificar a idade, só que essa informação esta detro da Classe Cliente.

mais ou menos isso aqui, mas que compile!!!!

    class Conta
    {
        public class Cliente {}
        public string Titular { get; set;}
        public double Saldo { get; private set; }
        public void Sacar(double valor)
        {
            if (valor >= this.Saldo && this.Cliente.idade>=18)
            {
            this.Saldo -= valor;
            }
        }



    }
}
2 respostas
solução!

Ok, você chegou bem perto da solução, George! Sua classe Cliente idealmente deve ser definida em outro arquivo (pode ser no mesmo, mas não é ideal). Pense um pouco sobre qual a sua motivação para que a classe Cliente seja definida dentro da classe Conta.

Mas se é o que você quer, você precisa tanto definir a classe QUANTO um atributo Cliente No seu código você disse que o Titular era uma String. Transforme ele na sua classe Cliente! Algo assim:

class Conta {
    public class Cliente {
        public int Idade;
    }
    public Cliente Titular;
    public double Saldo;

    public void Sacar(double valor) {
        if (valor >= this.Saldo && this.Titular.Idade >= 18) {
            this.Saldo -= valor;
        }
    }
}

Não tenho certeza de que você possa definir a classe Cliente como pública nesse escopo, mas faça o teste para garantir!

Oi George, tudo bom?

Primeiramente, precisamos definir bem quem é nosso Cliente:

 class Conta // aqui começamos a classe Conta
    {
        public class Cliente {} // aqui definimos outra classe Cliente vazia
        public string Titular { get; set;} // aqui definimos que nosso Titular é do tipo string
        public double Saldo { get; private set; }
        public void Sacar(double valor)
        {
            if (valor >= this.Saldo && this.Cliente.idade>=18) // aqui acessamos nossa classe Cliente, vazia, e tentamos pegar um atributo idade dela!
            {
            this.Saldo -= valor;
            }
        }



    }
}

Perceba que estamos criando uma classe dentro da outra. Por isso o código não compila! Como o Marco disse, o ideal é criar um arquivo para cada classe.

E, além disso, estamos dizendo que nosso Titular é do tipo String, não do tipo Cliente! tenta dar uma olhada nisso. O ideal seria chegar em algo parecido com:

    // resto da classe Conta
        public Cliente Titular { get; set; } // declaramos um Titular do tipo Cliente!

        public virtual void Saca(double valor)
        {
            if (valor >= this.Saldo && this.Titular.Idade>=18) // acessamos a property Idade do nosso Titular que é do tipo Cliente =)
            {
                this.Saldo -= valor;
            }
        }

Qualquer dificuldade, compartilhe com a gente! Bons estudos =)