Encapsulamento – Modificadores de Acesso

Propaganda
Aula 8: Encapsulamento
Prof. Jefersson Alex dos Santos
Conceitos
•
•
•
Escrita de Classes
Encapsulamento
Manipulação de Objetos
Encapsulamento
Serve para controlar o acesso aos atributos e
métodos de uma classe
É uma forma eficiente de proteger os dados
manipulados dentro da classe
Determina onde esta classe poderá ser
manipulada
Pode ser dividido em dois níveis:
Classe: pública ou padrão
Atributos e métodos
Modificadores de Acesso
Visível apenas para a classe (private)
Visível para o mundo (public)
Visível para o pacote e todas as subclasses
(protected)
Visível para o pacote (o padrão, sem modificador)
Métodos Acessores e Modificadores
Geralmente, os campos de dados privados são de
natureza técnica e interessam apenas ao criador
das operações.
Assim, o acesso aos atributos deve ser permitido
pela implementação por meio de três itens:
Um campo de dados privado
Um método de leitura (acessador)
Um método de alteração (modificador)
Por convenção, acessores e modificadores são
chamados Getter and Setter
• https://fedorahosted.org/spacewalk/wiki/JavaCodi
ngConventions
Métodos Acessores e Modificadores
Vantagens:
Implementação interna pode ser modificada sem afetar
nenhum código fora da própria classe
Os métodos “modificadores” podem fazer testes contra
erros
Exemplo: método getPixel do TP1.
Os limites da imagem puderam ser testados.
Os atributos sempre devem ter modificadores
individuais?
Método Construtor
O que é?
Sobrecarga:
Quantos construtores uma classe pode ter?
Construtores podem ser “recursivos”?
Construtor padrão:
O que é? Para que serve?
É possível ter uma classe sem construtores?
Modificadores de acesso:
Os construtores são sempre públicos?
Pra que serviria um construtor privado?
Construtor Privado
Motivos
Impedir a instanciação da classe
Permitir a instanciação através de um método estático
da classe
Exemplos
Classes utilitárias: java.lang.Math e
java.utils.Arrays.
Enumerations (enum)
Padrões de projeto Singleton
o construtor só é acessível por um método público e estático
da classe
a classe pode ser instanciada uma única vez
Outras palavras-chave
Static (atributos, métodos e em um “bloco
estático”, associação com classe e não com
instancia)
Abstract (classes não poderão ser instanciadas e
métodos não podem ser implementados)
Final (imutabilidade, classe não pode ser herdada,
método não pode ser sobrescrito)
Campos Estáticos
Constantes
public static final double CM_PER_INCH = 2.54;
Métodos Estáticos
Só podem acessar atributos estáticos de uma classe
Blocos Estáticos
static double[] buffer = new double[BUFFER_SIZE];
static {
for (int i = 0; buffer.length; i++)
buffer[i] = java.lang.Math.random();
}
Como escrever uma classe
1. Sempre mantenha os dados privados
2. Sempre inicialize os dados
3. Não use tipos básicos em demasia em uma classe
String rua; int numero; String complemento; ... (?)
4. Nem todos os campos precisam de “acessores” e
“modificadores”
5. Use uma forma padrão de definição das classes
(consistência)
6. Divida classes com muitas tarefas
7. Dê nomes às classes, métodos e atributos que
representem suas tarefas
Usando Objetos
Variável objeto
Endereço end;
Criando um objeto
end = new Endereço();
Inicialização
Endereço res = null;
Endereço res = new Endereço();
Atribuição de objetos
res = end;
Método clone
Objetos como argumentos
Objetos são referências, mas eles não são
passados por referência!
Os parâmetros dos métodos funcionam
como novos “ponteiros”
Os métodos podem mudar o estado de um
objeto usado como parâmetro se ele tiver
acesso aos métodos “modificadores”
Referência
• Core Java 2 - Volume I Fundamentos
Download