Atributos em classe

4 respostas
lucasn

Galera,

Uma vez eu li que sempre que você puder declarar um atributo de uma classe como private, faça-o.
Então, surgiram algumas dúvidas enquanto eu programava...

a) Isso que eu li, é verdadeiro ?

b) Vejam a classe a seguir. Nela, eu estou seguindo o que eu li. Mas essa classe não está "ineficiente" ? Não bastaria declarar x,y e z como public e modifica-los diretamente ( instancia.x = 2.5; ) ?

public class Ponto {
    private double x;
    private double y;
    private double z;

    public Ponto(double x , double y)
    {
        this.x = x;
        this.y = y;
    }
  
    public Ponto(double x, double y, double z)
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }
    
    public void setx(double x)
    {
        this.x = x;
    }
    
    public void sety(double y)
    {
        this.y = y;
    }
}

Obrigado! :P

4 Respostas

luciano.eti

sim!

lembra-se do encapsulamento ???

[]'s

lucasn

Ah! Obrigado!

B

Sim, mas isso fere o que chamamos de encapsulamento.

Imagina que um dia te peçam para que x não possa ter valores negativos. Se o atributo x for privado, você só precisa alterar o setX para solucionar o problema. Se x fosse público, você teria que alterar todos os lugares do programa inteiro onde alguém está fazendo instancia.x = alguma coisa, sem falar pode ter códigos de outras pessoas que você não tem acesso.

lucasn

Faz sentido.
Nesse meu caso, o encapsulamento não faria falta, mas em outros casos, como o Bruno exemplificou acima é muito útil.

Valeu, pessoal!

Criado 20 de julho de 2009
Ultima resposta 20 de jul. de 2009
Respostas 4
Participantes 3