Encapsulamento – Modificadores de Acesso
Transcript of Encapsulamento – Modificadores de Acesso
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/JavaCodingConventions
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