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

Como referenciar uma classe "profunda" com this?

Olá,

Provavelmente o título não deve ter ajudado muito então eu vou explicar.

Eu criei uma classe chamada Conta e dentro dela criei um objeto de outra classe, chamada Operacoes:

namespace CaixaEletronico
{
    class Conta
    {
        public double saldo;
        public string nome;

        Operacoes op = new Operacoes();
    }
}

O objetivo era deixar a conta com as informações e criar uma classe para colocar os métodos. A minha dificuldade porém, está em acessar os atributos da Conta com os métodos que estão na classe Operacoes:

namespace CaixaEletronico
{
    class Operacoes
    {
        public void Sacar(double val)
        {
       // Isso não funciona =(
            this.op.saldo = this.op.saldo - val;
        }
    }
}

Agradeço desde já a ajuda.

5 respostas

Ola, eu estou tentando resolver seu problema gostaria de saber por qual motivo voce gostaria de fazer deste jeito

Aguardo o seu retorno ;)

Olá Felipe,

É para fins de encapsulamento, manter cada classe separada e com a sua própria função. (pelo menos é o que eu estou aprendendo no curso)

Espero que tenha ficado claro. =)

solução!

Ola amigo, Acho que você confundiu um pouco o termo "encapsulamento" A ideia do encapsulamento é basicamente você permitir ou não alguém poder usar a variável da sua classe Por exemplo: Public, protected e private Sendo do menos ate o mais seguro (creio eu que vc talvez nao tenha aprendido sobre o protected, entao apenas ignore) temos ainda as propertys que sao o set e o get que sao usados apos a variavel

public doube Saldo{get ; set private;}

isto indica que na hora qualquer um pode visualizar a sua variável, mas não mode modifica-la

Espero que eu tenha ajudado Caso tenha alguma duvida é so chamar

Olá, Ribeiro,

Como você está?

Na minha opinião, seria melhor manter o método Sacar() diretamente dentro da classe Conta. Não enxergo problemas de encapsulamento nisso.

Espero ter ajudado.

Abraços.

Operacoes, no seu caso, é uma classe independente de Conta, e não tem acesso a nada da classe Conta, mesmo que esteja sendo usada como propriedade. Reforço a opinião dos outros, é melhor deixar os métodos na própria classe conta.