Programação Java
- Encapsulamento Marco Fagundes
[email protected]
© 2007 Marco Fagundes - [email protected]
1
Tópicos
Acessando atributos e Métodos
Information Hiding
Métodos get() e set()
Exercício
© 2007 Marco Fagundes - [email protected]
2
Acessando Membros de Objetos
Lembrando que, uma vez criado o objeto seus
membros podem ser acessados usando o
operador “.” : (<objeto>.<membro>)
Por exemplo:
c1.numConta = “001”; //Acessando atributos
c1.depositar(); //Acessando métodos
Conforme mencionado, o acesso direto aos
atributos não deve ser permitido
© 2007 Marco Fagundes - [email protected]
3
Information Hiding
Problema:
c1.saldo = -2.0; //saldo inválido
Solução:
Proteger/ocultar o estado interno de um objeto servidor
de ser corrompido pelos objetos clientes
Fornecer uma interface com operações que manipulem o
estado do objeto servidor
Objeto
© 2007 Marco Fagundes - [email protected]
operações/métodos/
comportamento
propriedades/atributos/dados/
variáveis
Acesso
4
Information Hiding
O ato de ocultar detalhes de implementação de um
objeto é chamado de “information hiding ” ou
encapsulamento
Atributos devem ser todos privados (modificador
private)
Por exemplo:
public class ContaCorrente{
private String numero;
private double saldo;
}
© 2007 Marco Fagundes - [email protected]
5
Lab1 - Encapsulando Atributos
Encapsule o estado da classe ContaCorrente.
Verifique quais erros o encapsulamento provocou.
© 2007 Marco Fagundes - [email protected]
6
Encapsulamento
O acesso a um membro privado fora da classe
ocasiona um erro de compilação
Deve-se construir a interface do objeto com
métodos públicos (modificador public)
Métodos para manipulação do estado do objeto
para alteração (métodos mutators) ou acesso
(métodos accessors)
Objeto
Métodos de
acesso (get)
© 2007 Marco Fagundes - [email protected]
Métodos de
Mutação (set)
7
Encapsulamento
Método de Acesso retorna um valor, sendo
nomeado da seguinte forma: get + nome do
atributo a ser retornado
Por exemplo:
public String getNumero( ){
// retorna o atributo numero
return this.numero;
}
© 2007 Marco Fagundes - [email protected]
8
Encapsulamento
Método de Alteração não retorna nenhum valor
(void), sendo nomeado da seguinte forma: set +
nome do atributo a ser modificado
Por exemplo:
public void setNumero(String pNumero){
// atualiza o atributo numero
this.numero =pNumero;
}
© 2007 Marco Fagundes - [email protected]
9
Encapsulamento
Classe ContaCorrente com atributos privados,
métodos accessors e mutators
public class ContaCorrente{
private String numero;
private double saldo;
public void setNumero(String pNum){numero = pNum;}
public String getNumero(){return numero;}
public double getSaldo(){return saldo;}
public boolean depositar(double pVal){...}
public boolean sacar(double pVal){...}
}
© 2007 Marco Fagundes - [email protected]
10
Lab1 - Métodos (get/set)
Implemente um método mutatório (set) que grave um
número de conta (passado como argumento) no atributo
número.
Implemente métodos na classe ContaCorrente que
permitam o acesso (get) a seus atributos(número e saldo)
Na classe aplicativo:
Crie um objeto do tipo ContaCorrente
Grave valores em seus atributos (número e saldo)
Mostre para o usuário os valores dos atributos do objeto
criado
© 2007 Marco Fagundes - [email protected]
11
Exercício 1
Estenda o Exercício 2 (do Aula Anterior), encapsulando os
atributos da classe candidato.
Disponibilize métodos de acesso e mutação para os
atributos que foram encapsulados.
Na classe aplicativo, ilustre a utilização dos métodos
implementados.
© 2007 Marco Fagundes - [email protected]
12
Pontos Principais
O estado interno do objeto deve ser
protegido/escondido dos outros objetos
(informatiom hiding ou encapsulamento)
Todos os atributos de uma classe devem ser
privados (modificador private)
Deve-se disponibilizar métodos accessor(get) e
mutator(set) para permitir a manipulação dos
atributos privados
© 2007 Marco Fagundes - [email protected]
13
Download

Encapsulamento