Pelo que eu entendi, a questão é que o objeto "casa" criado dentro do metodo
criaNovaCasaAlugada() não deveria alterar o atributo alugada, atributo esse
que a principio é do seu "criador" (o objeto this).

Mas ele não alterou o atributo do objeto this, mas o atributo alugada da sua
própria instancia, ou seja this.alugada está preservada.

Acho que o "problema" é mais de sintaxe da linguagem do que de conceito de
OO: o compilador achou um atributo alugada dentro da classe Casa, e validou
o codigo.

Do ponto de vista de codificação isto está correto: um atributo privado está
sendo manipulado dentro da própria classe.

Testem o codigo abaixo para ver o resultado.

Roberto Tatemoto

PS: Mas que isto fica esquisito...

class Casa implements Cloneable
{

 private boolean alugada;

 public Casa()
 {
 }


 public Casa criaNovaCasaAlugada() throws Exception
 {
 Casa casa = (Casa)this.clone();
 casa.alugada = true;

 System.out.println("Atributo do objeto this " + this.alugada );

 return casa;
 }

 public void setAlugada(boolean alugada)
 {
 this.alugada = alugada;
 }

 public boolean isAlugada()
 {
 return alugada;
 }

}

public class MainCasa

{ public static void main(String[] args)  throws Exception
 {
  Casa casa = new Casa();
  casa.setAlugada(false);

  Casa oClone = casa.criaNovaCasaAlugada();

  System.out.println("Original " + casa.isAlugada());
  System.out.println("Clone " + oClone.isAlugada());

 }
}




> Se for para ser meio "xiita", de fato o jconde tem razão. A casa this é um
objeto e a
> casa nova é outro, logo um não deveria mexer nos atributos do outro. Mas
como eles
> pertencem a mesma classe, acaba sendo possível esse tipo de código.
Teoricamente, é um
> furo, mas na prática, o programador da classe é o cara mais indicado para
"fuçar" na
> classe à vontade, pois ele (em princípio) sabe exatamente o que deve ou
não fazer com
> cada atributo nessa classe, assim o risco de fazer uma besteira muito
grande é
> pequeno.
>
> 15/11/02 10:27:56, "Herbert Alexander Faleiros" <[EMAIL PROTECTED]>
wrote:
>
> >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]
> >-------------------------------------------------------------------------
> >
> +++++++++++++++++++++++++++++++++++
> Ana Paula Brandão Lopes, M. Sc.
> Universidade Estadual de Santa Cruz
> Ilhéus-BA
> 73-680-5271
> +++++++++++++++++++++++++++++++++++
>
>
>
> ------------------------------ 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] 
-------------------------------------------------------------------------

Responder a