Encapsulamento


A Orientação a Objetos propõe uma organização de software em termos de coleção de objetos discretos incorporando estrutura e comportamento próprios. Esta abordagem de organização é essencialmente diferente do desenvolvimento tradicional de software, onde estruturas de dados e rotinas são desenvolvidas de forma apenas fracamente acopladas.
Encapsulamento consiste em separar os aspectos externos de um objeto, os quais são acessíveis a outros objetos, dos detalhes internos de implementação do objeto, os quais permanecem escondidos dos outros objetos. O uso de encapsulamento evita que um programa torne-se tão interdependente que uma pequena mudança tenha grandes efeitos colaterais.

class Quadrado {
     
      public int lado;
     
}

public class App {
     
      public static void main(String[] args) {
            Quadrado quadrado = new Quadrado();
            /* isso aparentemente não causa erro, mas
             * não é uma boa implementação de
             * encapsulamento, pois, dessa forma, é
             * possível inserir valores não 
             * desejáveis, que a classe talvez não 
 * esteja preparada para receber */
            quadrado.lado = 1;
            quadrado.lado = -1;
      }
     
}

Para ter uma classe que possa ser alterada sem gerar muitos danos em outras classes que a estão utilizando, é necessário incluir encapsulamento, para isso deve-se:
·            Manter as variáveis de instância protegidas (com algum modificador de acesso, normalmente private);
·            Tornar público os métodos de acesso (getters e setters), forçando o código de chamada para usar esses métodos em vez de acessar diretamente a variável de instância;
·            Usar a convenção JavaBean para os getters e setters.

class Retangulo {
     
      //proteger as variáveis de instâncias
      private int lado;

      //métodos getters e setters públicos
      public int getLado() {
            return lado;
      }
      public void setLado(int lado) {
            //tratamento do dado que será settado
            if (lado < 0)
                  this.lado = 0;
            else
                  this.lado = lado;
      }
     
}

public class App2 {

      public static void main(String[] args) {
            Retangulo retangulo = new Retangulo();
            retangulo.setLado(1);
      }
     
}

Fonte: SCJP Sun Certifi ed Programmer for Java 6 Study Guide

0 comentários:

Postar um comentário