Tipo… lendo o acesso a membros não compreendi a finalidade de usar dados public ou private (ou métodos) porque não deixar todos public? q tipo de erro posso encontrar na falta de manipulação de tais controladores??
[b]private ou public ?[/b]
9 Respostas
Opa,
bem, é um padrão, uma boa forma de programação deixar os atributos e métodos que devem ser utilizados apenas em uma classe ser do tipo privados. E para atributos serem acessados utilize get/set. Não faz muito sentido, é mais por questão de ordem. Pelo menos é minha opnião!
:okok:
Imagine essa classe:
public class Pessoa{
public int peso;
}
public static void main(String[] a){
Pessoa pes = new Pessoa();
pes.peso = -50;
}
por mais magra que a pessoa seja, o peso dela nunca poderá ser negativo…
8O
mas como é um atributo int o usuario põe qualquer int lá dentro… se você usar os metodos de acesso você pode controlar isso…
public class Pessoa{
private int peso;
public void setPeso(int p){
if(p>0){
peso = p;
}
}
}
pronto, agora o usuario nao pode atribuir valores negativos para o peso…
para alguns atributos nao é feita nenhuma validação, porem se voce encapsula alguns e outros nao, voce fica sem padrão…
A questão é que você acha que só você vai usar seu código.
Imagine que alguém usasse um JFrame assim: frame.height = -10;
Mas não dá, tem que usar o setSize(), que vai lidar com situações desse tipo.
O nome disse é encapsulamento, procure no Google. Não é uma ordem, é o pilar básico de programação orientada a objetos.
Colocar get/set acessando seus métodos não é muito diferente de atributos públicos, e deve ser evitado o máximo possível.
Usa-se o private para garantir a regra de negocio da sua aplicação!
Como assim?
Então pcalcado a resposta do jairelton é uma maneira de se garantir a regra do negocio…
Acho que é uma maneira de se certificar de que determinada regra será seguida assim como a do peso e altura, ninguém nunca irá pesar -50 e ter 5,00m de altura. Creio eu que garantir a regra do negocio tenha mais ou menos esse conceito!
Me corrija caso esteja errado!
Falou!
Mais ou menos, é uma maneira de garantir o estado do objeto, chamada invariante.
www.fragmental.com.br/arquivos/contratosnulos.pdf
Compreendi, Obrigado!