Você está na página 1de 15

Programao I Orientao a Objetos Encapsulamento

Alexandre Michael alexandre_michael@unit.br

Encapsulamento
Em Orientao a Objetos, encapsular significa ocultar as informaes de um objeto. Encapsular consiste em construir classe que no permita o acesso direto aos seus atributos. Separao entre interface e implementao que permite que usurios de objetos possam utilizlos sem conhecer detalhes de seu cdigo.

Encapsulamento
o processo de impedir que as variveis de uma classe sejam lidas ou modificadas por outras classes. A nica maneira de usar essas variveis chamando mtodos da classe, se eles estiverem disponveis.
(Aprenda em 21 dias Java 2.0)

Encapsulamento
A finalidade do encapsulamento a proteo dos dados. O atributo privado s pode ser acessado externamente atravs de um mtodo. Cabe ao mtodo realizar as consistncias necessrias para proteger o dado de valores invlidos.

Encapsulamento
a maneira de dar aos atributos de uma classe o comportamento equivalente ao de uma caixa preta. Portanto, os atributos sempre devem privados (com o modificador private). ser

Somente a prpria classe pode acessar os seus atributos. Classes externas no tem permisso de acessar tais atributos.
5

Encapsulamento - Acessabilidade
Vantagens :

o usurio conhece apenas o que necessrio; detalhes de implementao ficam ocultos; manter a consistncia e a integridade dos dados.

Encapsulamento - Acessabilidade
A acessabilidade de uma classe, mtodo ou atributo de uma classe a forma com que tal elemento pode ser visto e utilizado por outras classes. H trs modificadores (palavras reservadas) mas quatro nveis de acesso. public (pblico) private (privado) protected (protegido)
7

Encapsulamento - Acessabilidade
Atributos e mtodos podem ter um dos seguintes tipos de acesso: public, private e protected, caso nenhum tipo seja especificado ser usado o tipo package-private ou default. A seguir, uma tabela mostra os critrios de acesso para cada um dos tipos especificados.

Encapsulamento - Acessabilidade
Tipo public protected package-private * ou default private Classe visvel visvel visvel visvel Pacote visvel visvel visvel Subclasse visvel visvel Todos visvel

* no existe um modificador com este nome, a ausncia de um modificador de acesso deixa o membro com acesso package-private ou default
9

Encapsulamento - Acessabilidade
public
Usar em: Construtores e mtodos que fazem parte da interface do objeto Constantes e mtodos estticos Evitar usar em: Construtores e mtodos de uso restrito Atributos dos objetos

10

Encapsulamento - Acessabilidade
protected
Usar em: Construtores que s devem ser chamados pelas subclasses ( atravs de super() ) Mtodos que s devem ser usados se sobrepostos Evitar usar em: Atributos dos objetos

11

Encapsulamento - Acessabilidade
package-private (ou default)
Usar em: Construtores e mtodos que s devem ser chamados pelas classes e subclasses do pacote Constantes estticas teis apenas no pacote Evitar usar em: Mtodos cujo uso externo seja indesejvel Atributos dos objetos
12

Encapsulamento - Acessabilidade
private
Usar em: Construtores de classes que s devem criar um nmero limitado de objetos Mtodos que no fazem parte da interface do objeto Variveis e constantes estticas que no tm utilidade ou no podem ser modificadas fora da classe Atributos dos objetos
13

Encapsulamento - Acessabilidade
Observaes

Classes s podem ser public ou packageprivate No usar modificadores de acesso em variveis locais (no faz sentido pois o escopo local)

14

Encapsulamento
O encapsulamento evita que um usurio de uma classe modifique diretamente os atributos dos objetos. Para isso, deve ser usado o modificador private nos atributos da classe. Para acessar os atributos, usar os mtodos: setNomeDoAtributo (configuradores) e getNomeDoAtributo (capturadores)

15