Destruir a encapsulação?

7 respostas
Y

Programadores de alguma liguagem OO sempre falam que mapear objetos para tabelas banco de dados é horrivel destroem a encapsulação.

Minha dúvida é a seguinte o que é destruir essa encapsulação??

7 Respostas

Bani

:arrow: Acho que o correto seria “encapsulamento”
:arrow: Discordo da frase. O problema maior é perder a orientação a objetos e deixar suas classes com “características relacionais” ao invés de organizar os objetos da forma como normalmente deveriam estar no lado da programação
:arrow: Mas respondendo a pergunta, “destruir o encapsulamento” seria expor as características do objeto. Tudo bem, é verdade que quando você tem uma tabela que representa o objeto você pode manipulá-la diretamente e alterar os dados, talvez até privados, do seu objeto de forma irregular. Mas acho que não tem muito como escapar disso usando banco de dados… quem sabe não é essa mais uma idéia para usar Prevayler… hehehe

Paulo_Silveira

bem
isso eh relativamente ruim, mas nao quer dizer q vc vai expor seu encapsulamento nao.
se vc usar variaveis publicas e tiver trocentos metodos save e update dentro do proprio bean, ai sim (GUJ, cof, cof :)).
encapsular eh esconder o modo o qual voce representa seu estado interno. soh voce sabe como ele eh representado.

rigolin

muitas vezes BD’s são usados como middleware entre sistemas… o Prevayler vale a pena ser estudado. Não ter que mapear objetos elimina muito desgaste intelectual… sem citar as outras vantagens tipo usar OO de verdade…

Y

Vamos ver se entendi

Se eu tenho um Bean bem simples  para exemplo tipo

	public class Pessoa{
	  private nome="";
	  public void setNome(String nome){this.nome=nome;}
	  public String getNome(){return nome;}
	}	 

Ao usar o Prevayler como o pessoal falou, esse Bean será persistido, não preciso me preocupar com  tabela(isso seria um dos desgate intelectual dito acima?) e o estado interno do Bean está escondido ou seja  não ocorre a "destruição do encapsulamento".
Bom estou iniciando agora se estiver errado por favor me corrijam.
Daniel_Quirino_Olive

“Yoshi”:
Ao usar o Prevayler como o pessoal falou, esse Bean será persistido, não preciso me preocupar com tabela(isso seria um dos desgate intelectual dito acima?) e o estado interno do Bean está escondido ou seja não ocorre a “destruição do encapsulamento”.
Bom estou iniciando agora se estiver errado por favor me corrijam.

Não, Yoshi. Quem faz isso para você é o Hibernate. Prevayler persiste seus objetos diretamente na memória da sua máquina. Ou seja, nada de tabelas, nada de banco de dados, nada de SQL. Um paraíso, para a maioria dos casos.

Bani

Faltou um “implements Serializable” no seu bean :wink:
Mas a idéia básica é essa mesma.

Porém, como já foi dito, ninguém vai deixar de usar um banco de dados só por causa desse conceito de “destruir o encapsulamento”. Isso é algo que você tem que se preocupar no seu código, não no banco de dados.

cv1

Mesmo pq, encapsulamento eh exatamente a unica coisa que um banco de dados NAO PODE fazer :wink:

Criado 14 de outubro de 2003
Ultima resposta 14 de out. de 2003
Respostas 7
Participantes 6