Sie sind auf Seite 1von 2

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Curso Tcnico Integrado em Informtica Programao II Prof.

Rafael Ramires Jaques Encapsulamento

Introduo
Encapsulamento vem de encapsular, que em programao orientada a objetos significa separar o programa em partes, o mais isoladas possvel. Serve para controlar o acesso aos atributos e mtodos de uma classe. A idia tornar o software mais flexvel, fcil de modificar e de criar novas implementaes. Para exemplificar, podemos pensar em uma dona de casa (usurio) utilizando um liquidificador (sistema). O usurio no necessita conhecer detalhes do funcionamento interno do sistema para poder utiliz-lo, precisa apenas conhecer a interface, no caso, os botes que controlam o liquidificador. Uma grande vantagem do encapsulamento que toda parte encapsulada pode ser modificada sem que os usurios da classe em questo sejam afetados. No exemplo do liquidificador, um tcnico poderia substituir o motor do equipamento por um outro totalmente diferente, sem que a dona de casa seja afetada - afinal, ela continuar somente tendo que pressionar o boto. O encapsulamento protege o acesso direto (referncia) aos atributos de uma instncia fora da classe onde estes foram declarados. Esta proteo consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe. Depois devem ser criados mtodos para manipular de forma indireta os atributos da classe. Encapsular atributos tambm auxilia a garantir que o estado e o comportamento de um objeto se mantenha coeso. Por exemplo, no caso da classe Semaforo poderiamos ter um mtodo de acesso chamado lerCor(), e um modificador chamado proximaCor(). O estado mantido pois os usurios da classe no podem alterar as cores de um semforo ao seu bel prazer e, por exemplo, fazer a seguinte troca de cores: vermelhoamarelo-vermelho.

Getters e Setters
Buscando o encapsulamento, foram desenvolvidas tcnicas bastante importantes. Uma delas a utilizao de getters e setters. Mas o que so esses dois? Get vem do ingls pegar/obter e Set significa ajustar/colocar. Esses mtodos servem para intermediar retorno e ajuste de propriedades de uma classe. Isso muito importante pois desta maneira possvel estabelecer rotinas e restries no momento da alterao de valor de uma determinada propriedade. comum usar o padro get<nomeDoAtributo> para o mtodo que retorna o valor atual do atributo e set<nomeDoAtributo> para o mtodo que modifica o valor de um atributo do objeto, como no exemplo abaixo: setComProtecao e getComProtecao.

Exemplos
Sem encapsulamento
class NaoEncapsulado { // implicitamente public int semProtecao; } public class TesteNaoEncapsulado { public static void main(String[] args) { NaoEncapsulado ne = new NaoEncapsulado(); // ne uma instncia de NaoEncapsulado ne.semProtecao = 10; // acesso direto ao atributo System.out.println("Valor sem proteo: " + ne.semProtecao); // acesso direto aos atributos } }

No exemplo sem encapsulamento importante perceber que o atributo sendo pblico, o valor pode ser modificado de qualquer maneira, sem qualquer restrio.

Com encapsulamento
class Encapsulado { // private um modificador de acesso de restrio mxima private int comProtecao; public void setComProtecao(int valor) { comProtecao = valor; } public int getComProtecao() { return comProtecao; } } public class TesteEncapsulado { public static void main(String[] args) { Encapsulado e = new Encapsulado(); // "e" uma instncia de Encapsulado // acesso direto a um atributo protegido implicar erro de compilao e.comProtecao = 10; // deve-se acessar o atributos de forma indireta, encapsulada e.setComProtecao(10); System.out.println("Valor com proteo: " + e.getComProtecao()); } }

Importante a leitura do seguinte texto: http://blog.caelum.com.br/nao-aprender-oo-getters-e-setters/

Textos adaptados de: http://pt.wikipedia.org/wiki/Encapsulamento <Acessado em 12/05/2012> http://www.devmedia.com.br/encapsulamento-polimorfismo-heranca-parte-02/13026 <Acessado em 12/05/2012>

Das könnte Ihnen auch gefallen