Encapsulamento – Modificadores de Acesso

14
Aula 8: Encapsulamento Prof. Jefersson Alex dos Santos

Transcript of Encapsulamento – Modificadores de Acesso

Page 1: Encapsulamento – Modificadores de Acesso

Aula 8: Encapsulamento

Prof. Jefersson Alex dos Santos

Page 2: Encapsulamento – Modificadores de Acesso

Conceitos

• Escrita de Classes

• Encapsulamento

• Manipulação de Objetos

Page 3: Encapsulamento – Modificadores de Acesso

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

Page 4: Encapsulamento – Modificadores de Acesso

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)

Page 5: Encapsulamento – Modificadores de Acesso

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

Page 6: Encapsulamento – Modificadores de Acesso

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?

Page 7: Encapsulamento – Modificadores de Acesso

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?

Page 8: Encapsulamento – Modificadores de Acesso

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

Page 9: Encapsulamento – Modificadores de Acesso

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)

Page 10: Encapsulamento – Modificadores de Acesso

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();

}

Page 11: Encapsulamento – Modificadores de Acesso

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

Page 12: Encapsulamento – Modificadores de Acesso

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

Page 13: Encapsulamento – Modificadores de Acesso

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”

Page 14: Encapsulamento – Modificadores de Acesso

Referência

• Core Java 2 - Volume I Fundamentos