Encapsulamento

De Aulas
Revisão de 15h25min de 26 de novembro de 2016 por Admin (discussão | contribs) (Substituição de texto - "<code java n>" por "<syntaxhighlight lang=java line>")
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Voltar para Programação em Java

Quando trabalhamos com classes em Java, na maioria das vezes não é interessante que os atributos estejam visíveis para todos que utilizam a classe, nem que possam ser modificados livremente. Dessa forma, trabalhamos com o isolamento, ou encapsulamento, dos atributos, transformando-os em atributos não públicos. Contudo, para que possamos utilizar tais atributos, utilizamos métodos específicos chamados getters e setters.

Getters e Setters

Os métodos getters são métodos que retornam informações de atributos. Por exemplo, se quisermos retornar o atributo placa da classe Carro, podemos criar um método chamado getPlaca. Assim também, podemos criar um método para alterar a placa do carro, chamado setPlaca, passando a informação como parâmetro:

 1public class Carro {
 2    // ...
 3    private String placa;
 4    // ...
 5
 6    public String getPlaca() {
 7        return placa;
 8    }
 9
10    public void setPlaca(String placa) {
11        this.placa = placa;
12    }
13}

Até ai pode não parecer tanta vantagem. Contudo, isso começa a se tornar interessante conforme trabalhamos com informações que precisam ser tratadas antes de serem alteradas, ou mesmo precisam ser validades. Como no exemplo a seguir:

 1public class Encapsulamento01 {
 2	private int minhaInformacao = 0;
 3
 4	public void setMinhaInformacao(int entrada) {
 5		if (entrada > minhaInformacao) {
 6			minhaInformacao = entrada;
 7		}
 8	}
 9	
10	public void setMinhaInformacao(String entrada) {
11		int auxiliar = Integer.valueOf(entrada);
12		setMinhaInformacao(auxiliar);
13	}
14
15	public int getMinhaInformacao() {
16		return minhaInformacao;
17	}
18}

E a classe Main que acessa essas informações, agora encapsuladas.

 1public class Main {
 2	public static void main(String [] args) {
 3		Encapsulamento01 e01 = new Encapsulamento01();
 4		
 5		System.out.println(e01.getMinhaInformacao());
 6		// Utiliza o método get
 7		e01.setMinhaInformacao(10);
 8		System.out.println(e01.getMinhaInformacao());
 9		// Utiliza o método get sobrescrito
10		e01.setMinhaInformacao("4");
11		System.out.println(e01.getMinhaInformacao());
12	}
13}

Exercício

Criar uma classe Pessoa da seguinte forma:

  • Deve possuir pelo menos 4 atributos e todos encapsulados;
  • Criar métodos getters e setters para cada atributo;
  • Criar pelo menos 2 métodos sobrescritos;
  • Fazer validações ou gerenciamento de entrada em alguns métodos setters;
  • Criar uma classe principal que cria um objeto a partir da classe Pessoa e altere e mostre as informações desse objeto.