RES: [java-list] Restrição de acesso em classes x objetos
Se não me engano (corrijam-me se estiver errado) todos os métodos public desta sua classe podem acessar ou modificar as variáveis de instância private desta mesma classe. Não tem nada errado nisto, é assim que funciona mesmo, mas isto se aplica somente aos métodos public da classe, se vc tentar alterar ou acessar diretamente a variável, sem ser através de um destes métodos vc receberá algo do tipo: variable alugada has private acess in class Casa... Ou seja, apenas os métodos public da classe podem e devem acessar/modificar variáveis de instância private na classe. Herbert Alexander Faleiros Administrador de redes NT/W2K Programador Java / Webmaster Graduando em Física - UFSCar [EMAIL PROTECTED] [EMAIL PROTECTED] (16) 9117-2962 -Mensagem original- De: José Augusto Cerqueira Condé [mailto:[EMAIL PROTECTED]] Enviada em: sexta-feira, 8 de novembro de 2002 17:46 Para: '[EMAIL PROTECTED]' Assunto: [java-list] Restrição de acesso em classes x objetos Colegas, Recentemente me atentei a uma questão interessante. Os níveis de restrição de acesso a atributos e métodos de uma classe, implementados pela linguagem java, se aplicam apenas a classes e não a objetos. Tomem como exemplo a classe abaixo : public Casa { private boolean alugada; public casa() { } public Casa criaNovaCasaAlugada() { Casa casa = (Casa)this.clone(); casa.alugada = true; } public void setAlugada(boolean alugada) { this.alugada = alugada; } public boolean isAlugada() { return alugada; } } Apesar de parecer estranho o atributo alugada estar sendo acessado externamente, o método criaNovaCasaAlugada está correto do ponto de vista da linguagem java. Mas em relação às boas maneiras da Orientação Objetos, isto não seria aberração (objetos acessando atributos protegidos de outros objetos)? Atenciosamente, JConde [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] - -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -
Re: [java-list] Restrição de acesso em classes x objetos
Acho q a resposta a esta pergunta vai de opinião pessoal. Baseado na minha experiência em orientação a objetos e Java, eu diria que o fato dos modificadores de controle de acesso (public, private, etc) serem relativos às classes, e não aos objetos não é um problema, e sim uma característica. E esta pode vir a ajudar bastante em termos de praticidade, sem complicar, dificultar, ou ir contra as boas práticas de programação oo. Pode parecer meio "feio" no contexto de encapsulamento, mas: Se a classe Casa contém todos os detalhes de implementação de uma casa, incluindo todos os atributos e objetos, fazer com que a classe Casa só tenha acesso aos seus atributos privados (e não aos das outras instâncias da classe Casa) é o mesmo que dizer: "precisamosesconder os detalhes de implementação entre uma casa e outra". Deixando a análise conceitual de lado, e partindo para algo mais concreto, uma vez eu precisei implementar uma classe do tipo Matriz, que continha todas as operações sobre matrizes (soma, multiplicação, inversão, transposição, etc). Ela declaravaos atributos privados: private double mat[][]; private int linhas,colunas; e os acessos a esta matriz era intermediado pelos métodos get(int i, int j) e set(int i, int j, double valor), e as funções getLinhas() e getColunas(). Assim, os atributos "linhas" e "colunas" não são modificáveis por classes externas. Avantagem (neste caso) do fato que os atributos privados são acessíveis à classe, e não apenas ao objeto é que eu poderia modificar os atributos "linhas" e "colunas" de qualquer objeto do tipo Matriz dentro da classe Matriz (necessário em alguns algoritmos), além da facilidade de utilizar o atributo "mat[][]" diretamente. Luiz Felipe Molina - Original Message - From: "José Augusto Cerqueira Condé" [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, November 08, 2002 5:45 PM Subject: [java-list] Restrição de acesso em classes x objetos Colegas,Recentemente me atentei a uma questão interessante. Os níveis de restriçãode acesso a atributos e métodos de uma classe, implementados pela linguagemjava, se aplicam apenas a classes e não a objetos.Tomem como exemplo a classe abaixo :public Casa{private boolean alugada;public casa(){}public Casa criaNovaCasaAlugada(){Casa casa = (Casa)this.clone();casa.alugada = true; }public void setAlugada(boolean alugada){this.alugada = alugada;}public boolean isAlugada(){return alugada; }}Apesar de parecer estranho o atributo "alugada" estar sendo acessadoexternamente, o método "criaNovaCasaAlugada" está correto do ponto de vistada linguagem java. Mas em relação às boas maneiras da Orientação Objetos,isto não seria aberração (objetos acessando atributos protegidos de outrosobjetos)?Atenciosamente,JConde[EMAIL PROTECTED]-- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htmregras da lista: http://www.soujava.org.br/regras.htmhistorico: http://www.mail-archive.com/java-list%40soujava.org.brpara sair da lista: envie email para [EMAIL PROTECTED] -
[java-list] Restrição de acesso em classes x objetos
Colegas, Recentemente me atentei a uma questão interessante. Os níveis de restrição de acesso a atributos e métodos de uma classe, implementados pela linguagem java, se aplicam apenas a classes e não a objetos. Tomem como exemplo a classe abaixo : public Casa { private boolean alugada; public casa() { } public Casa criaNovaCasaAlugada() { Casa casa = (Casa)this.clone(); casa.alugada = true; } public void setAlugada(boolean alugada) { this.alugada = alugada; } public boolean isAlugada() { return alugada; } } Apesar de parecer estranho o atributo alugada estar sendo acessado externamente, o método criaNovaCasaAlugada está correto do ponto de vista da linguagem java. Mas em relação às boas maneiras da Orientação Objetos, isto não seria aberração (objetos acessando atributos protegidos de outros objetos)? Atenciosamente, JConde [EMAIL PROTECTED] -- LISTA SOUJAVA http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -