RES: [java-list] Restrição de acesso em classes x objetos

2002-11-23 Por tôpico Herbert Alexander Faleiros
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

2002-11-20 Por tôpico Luiz Felipe Molina



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

2002-11-14 Por tôpico José Augusto Cerqueira Condé
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]
-