segunda-feira, 26 de novembro de 2007

Encapsulamento

Encapsulamento, “data hiding” é um conceito bastante importante em orientação a objetos.
Neste tópico vamos falar das maneiras de restringir o acesso as declarações de uma classe e a
própria classe, isto é feito através do uso das palavras reservadas public, private e protected
que são qualificadores.
Alguém pode estar se perguntando o porquê de se restringir o acesso a certas partes de uma
classe. A idéia é simples, devemos fornecer ao usuário, cliente de uma classe, o necessário e
somente o necessário para que ele tire proveito da funcionalidade desta classe. Os detalhes devem ser omitidos, somente a lista de operações a qual uma classe deve atender fica visíve
Os benefícios são muitos: clareza do código, minimização de erros, facilidade de extensão.
Talvez a facilidade de modificação seja o mais importante dos benefícios. Como a classe é
conhecida pela sua interface, é muito fácil mudar a representação interna sem que o cliente,
usuário, perceba a diferença Estaremos preocupados em separar design de implementação, Java é uma linguagem boa de se programar em termos de design e em termos de implementação.
Programar tendo em vista o design é também chamado de “programming in the large”,
enquanto que programar tendo em vista implementação, codificação é chamado e“programming in the small”. Alguns programadores experientes afirmam que Java se parece com C quando estamos preocupados com codificação, mas quando estamos preocupados com design, Java se assemelha a Smalltalk.
Com encapsulamento você será capaz de criar componentes de software reutilizáveis, seguros,
fáceis de modificar.


Mas então como controlar o acesso de atributos e métodos em uma classe? Simples, através
das palavras reservadas private, public e protected cujos significados quando qualificando
métodos e atributos (private e public podem também qualificar classes) são descritos abaixo:

public

Estes atributos e métodos são sempre acessíveis em todos os métodos de todas as classes. Este é o nível menos rígido de encapsulamento, que equivale a não encapsular.

private

Estes atributos e métodos são acessíveis somente nos métodos(todos) da própria classe. Este é o nível mais rígido de encapsulamento.

protected

Estes atributos e métodos são acessíveis nos métodos da própria classe e suas subclasses, o que será visto em Herança

Nada especificado, equivale “package”ou “friendly”

Estes atributos e métodos são acessíveis somente nos métodos das classes que pertencem ao “package” em que foram criados. Este modo de acesso é também chamado de “friendly”.

Nenhum comentário: