sábado, 28 de fevereiro de 2009

Encapsulamento

Encapsulamento e polimorfismo são dois temas que costumam embrulhar a nossa cabeça no início com java... Ai embaixo uma explicação básica sobre encapsulamento para quem quiser aprender! Bons estudos!


Atributos com o modificador de acesso private só podem ser lidas pela classe que contém eles. Olhe no exemplo abaixo:

  1. class Pessoa{
  2. private String nome; //Somente a própria pessoa irá poder ler esse nome
  3. }


Isso quer dizer que se você instanciar a pessoa e tentar ler o nome diretamente, irá ser gerada uma exceção:
  1. Pessoa maria = new Pessoa();
  2. maria.nome= "Maria"; //Erro!!!


Existem modificadores de acesso para permitir o acesso direto a variável livremente ou com alguma restrição, como public, protected...

Pra que uso o private então?
Com atributos privates temos que acessar as variáveis através de métodos públicos, que permitem que o "pessoal" de fora possa acessar a variável, seja para leitura ou escrita.

E daí?
Com acesso usando métodos podemos dar mais flexibilidade ao código, mais segurança no acesso. Exemplo simples e didático:
Quero me certificar que a idade será sempre maior que 18 anos:

  1. class MaiorIdade{
  2. private int idade;

  3. public void setIdade(int pIdade){
  4. if(idade < 18){ //nesse ponto poderíamos lançar um execessão também
  5. System.out.println("Idade menor do que o permitido...");
  6. }else{
  7. this.idade = pIdade;
  8. }
  9. }
  10. }

O método GET deve ser definido para retornar o atributo na nossa classe:
  1. class Pessoa{
  2. private int idade;
  3. public int getIdade(){
  4. return this.idade;
  5. }
  6. }

SET: Do inglês configurar, atribuir, permiti você modificar um atributo de uma classe. COmo é um método, você deve receber o argumento para atribuir o valor
  1. maria = new Pessoa();
  2. maria.setNome("Maria"); //Observe que o valor foi entre os parênteses

Para definir o método você deve prever o recebimento do argumento:
  1. class Pessoa{
  2. private String nome;

  3. public void setNome(String pNome){
  4. this.nome = pNome;
  5. }
  6. }


_________________________________________

Bem de forma resumida: Você usa métodos para acessar atributos não visiveis por outras classes. Esses métodos são chamados de GET e SET. GET para ler e SET para modificar o atributo.

No eclipse é possível gerar os GET's e SET's automaticamente!! Crie a sua classe com os atributos privados e aperte sequencialmente ALT depois S e depois R e assim você ira escolher quais métodos gerar e para quais atributos!

Nenhum comentário: