Encapsulamento

6 respostas
A

Olá a todos,

Fazendo um dos MasterExams do livro da Kathy, vi o texto abaixo como uma alternativa correta sobre encapsulamento, porém eu não entendi o que a afirmativa quis dizer. Alguém pode ajudar?

Isso quer dizer que encapsulamento limita as consequências de alterações? ahn hein?! heheheh

Obrigado a todos!

6 Respostas

thiagolopes
Vamos pegar um exemplo prático:
public class thiagoUm{

private int num;

}

public class thiagoDois{
private int num2;
}

talvez o que ela quis dizer é que usando um método de acesso , private, podemos modificar apenas os atributos na classe local, ou seja, devido a estas limitações do atributo temos que usar o set e get para "tirar" as limitações impostas pelo método de acesso private.

Por favor me corrijam se eu tiver errado.... Abraços !!!!

ViniGodoy

Se você for a uma oficina mecânica e trocar o motor do seu carro por um motor elétrico, você ainda vai continuar conseguindo pisar nos pedais, trocar marchas e dirigir o carro. Na prática, um motorista mais relaxado nem precisaria saber que um motor sequer existe. Ele pode nunca abrir o capô.

A idéia com encapsulamento é exatamente essa. Com encapsulamento, você pode alterar o conteúdo interno de uma classe, sem que nenhuma das classes que use sua interface pública sejam afetadas. O que é uma ótima e bem-vinda limitação das consequências dessa alteração.

O que acontece num código não encapsulado? Você altera uma classe, e outra classe nada a ver, em um ponto completamente afastado do código dá erro. Triste, mas tem gente que programa assim.

Um carro não encapsulado exigiria que você, por exemplo, pressionasse a alavanca de aceleração do seu motor diretamente. E a posição dessa alavanca variaria de motor para motor. Uma troca, como descrita acima, alteraria a forma com que o usário perceberia o carro. Assim, a modificação mecânica teve suas conseqüência ampliada, afetando a pessoa que não gostaríamos que afetasse: o motorista.

abelgomes

ViniGodoy:
Se um técnico for até a sua casa e substituir o tubo de ráios catódicos dela por uma tecnologia LCD, fechar sua TV e tudo continuar funcionando, você vai deixar de saber usar os botões que estão no painel? Ou não vai mais conseguir trocar de canais?

A idéia é exatamente essa. Com encapsulamento, você pode alterar o conteúdo interno de uma classe, sem que nenhuma das classes que use sua interface pública sejam afetadas. O que é uma ótima e bem-vinda limitação das consequências dessa alteração.

O que acontece num código não encapsulado? Você altera uma classe, e outra classe nada a ver, em um ponto completamente afastado do código dá erro. Triste, mas tem gente que programa assim.

:thumbup: :thumbup: :thumbup: :thumbup: :thumbup: perfect…

H

Ótima analogia. Agora me passa o numero telefonico do tecnico que vou chamar ele para transformar a minha TV.

rsrsrs

Muito boa a explicação.

ViniGodoy

Apesar dos quotes, alterei a explicação ali em cima para algo mais factível. heheheheh

A

Valeu pessoal, já deu uma boa esclarecida nessa questão :wink:

Um abraço!

Criado 28 de novembro de 2008
Ultima resposta 28 de nov. de 2008
Respostas 6
Participantes 5