18/02/09 Aula 10 - Encapsulamento - Prof Neves 2
Sumário
Objetivos Conceitos de Encapsulamento
– Vantagens – Moderadores de Acesso– Exemplo sem Encapsulamento– Exemplo com Encapsulamento– Exemplo 2 dos 7 erros
• Atividade 1• Atividade 2 Conclusões
18/02/09 Aula 10 - Encapsulamento - Prof Neves 3
Objetivos
Identificar os conceitos de encapsulamento da OO na linguagem Java;
Compreender o uso do encapsulamento na programação e
Analisar os exemplos propostos pelo Professor.
18/02/09 Aula 10 - Encapsulamento - Prof Neves 4
Encapsulamento
Conceito: • Encapsulamento é o processo de proteger os membros de uma classe (atributos e métodos), permitindo que somente os membros necessários (tipo públicos) sejam acessados pelos usuários da classe.
Prática: significa separar o programa em partes, o mais isoladas possível.
A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações.
18/02/09 Aula 10 - Encapsulamento - Prof Neves 5
Encapsulamento
Vantagens: • Facilidade de Manutenção:
•Precisando realizar mudanças significativas no interior de uma classe, não será necessário modificar o restante do programa.
• Segurança de Informações:• Garantia de que a informação não será corrompida acidentalmente pelo resto do programa. • Toda a comunicação com o objeto ocorre por meio dos métodos modificadores e de acesso ( setXXX() e getXXX()), oferecendo segurança na atribuição dos valores.• Criamos programas mais robustos e confiáveis
18/02/09 Aula 10 - Encapsulamento - Prof Neves 6
Encapsulamento
18/02/09 Aula 10 - Encapsulamento - Prof Neves 7
Moderadores de Acesso
18/02/09 Aula 10 - Encapsulamento - Prof Neves 8
Exemplo Sem Encapsulamento
class NaoEncap { int semProtecao; }
public class TesteNaoEncap { public static void main(String args[]) { //objeto1 é uma instância de NaoEncap NaoEncap objeto1 = new NaoEncap(); objeto1.semProtecao = 10; //acesso direto ao atributo //acesso direto aos atributos System.out.println("Valor sem proteção: " + objeto1.semProtecao); }}
18/02/09 Aula 10 - Encapsulamento - Prof Neves 9
Exemplo com Encapsulamento
class Encapsulado { //private é um modificador de acesso de restrição máxima private private int comProtecao; public void setComProtecao (int comProtecao) { this.comProtecao = comProtecao; } public int getComProtecao() { return this.comProtecao; } }
public class TesteEncapsulado { public static void main(String args[]) { Encapsulado e = new Encapsulado(); e.comProtecao = 10; //deve-se acessar o atributos de forma indireta, encapsulada e.setComProtecao(10); System.out.println("Valor com proteção: " + e.getComProtecao()); } }
18/02/09 Aula 10 - Encapsulamento - Prof Neves 10
Exemplo 2 – Descubra ...
public class Encapsulamento { private int a,b; public void Valor(){ a=a+b; System.out.println("O valor é "+a); }
public Encapsulamento (int x,int y) { a=x; b=y; } File: Encapsulamento.java
package aula10a;
// classe principalpublic class MetodoP{ public static void main(String[] args) { Encapsulamento a1 = new; Encapsulamento(1,150); a1.Valor(); }} File: MetodoP.java
Onde estão os 7 erros?
18/02/09 Aula 10 - Encapsulamento - Prof Neves 11
Atividade 1
Construa uma classe em Java que contenha os seguintes aspectos:
a) Crie atributos nome, idade e altura como privates;
b) Encapsule os atributos;
c) Crie um método main que mostre os valores que estão nos
atributos.
18/02/09 Aula 10 - Encapsulamento - Prof Neves 12
Atividade 2
Considere o Programa 3.4 e responda às seguintes questões:
a) A classe Tempo segue os princípios do encapsulamento? Comente a respeito disto.
b) Como é possível estender o código para atender aos princípios do encapsulamento? Quais seriam as vantagens que isto traria? Faça as modificações necessárias no código.
18/02/09 Aula 10 - Encapsulamento - Prof Neves 13
Conclusões
O encapsulamento protege os dados do objeto de forma arbitrária e não-intencional. O encapsulamento é o resultado (ou ato) de ocultar do usuário os detalhes da implementação de um objeto.A definição de como implementar os conhecimentos ou ações de uma classe, sem informar como isto é feito.