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: "precisamos esconder 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
declarava os 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.
A vantagem (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
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]
-------------------------------------------------------------------------
