Neste recapitulando iremos revisar um dos conceitos mais importantes da programação orientada a objetos, o encapsulamento de dados.Continuaremos também a exercitar nossos conhecimentos com uma questão do POSCOMP 2012.
Encapsulamento de dados é um tema muito importante na área da computação, já que em muitas das linguagens usadas em programação, como java, abordam esse assunto.
“Encapsulamento: os dados (atributos) são armazenados em uma caixa preta (classe) junto com as operações (métodos) que os manipulam.”
O encapsulamento favorece a ocultação da informação quando esconde detalhes de implementação do objeto (tanto pelo armazenamento dos dados, quanto pela implementação dos métodos). Mas, encapsulamento por si só não garante ocultação da informação. É preciso controlar a visibilidade dos dados (sendo private) e definir métodos públicos para manipular esses dados.
Leia a questão abaixo do POSCOMP 2012:
30) O encapsulamento dos dados tem como objetivo ocultar os detalhes da implementação de um determinado módulo. Em linguagens orientadas a objeto, o ocultamento de informação é tornado explícito requerendo-se que todos os métodos e atributos em uma classe tenham um nível particular de visibili- dade com relação às suas subclasses e às classes clientes.
Em relação aos atributos de visibilidade, assinale a alternativa correta.
a)Um atributo ou método público é visível a qualquer classe cliente e subclasse da classe a que ele pertence.
b)Um atributo ou método protegido é visível somente à classe a que ele pertence, mas não às suas subclasses ou aos seus clientes.
c)Um atributo ou método privado é vísivel somente às subclasses da classe a que ele pertence.
d)Um método protegido não pode acessar os atributos privados declarados na classe a que ele pertence, sendo necessária a chamada de outro método privado da classe.
e)Um método público pode acessar somente atributos públicos declarados na classe a que ele pertence.
Assista a aula abaixo (curso “Aprenda Java Fácil” aula 9):
Resolvendo a questão (elimando alguns ítens):
Inicialmente vamos eliminar alguns itens:
Eliminamos o ítem“b”, pois um atributooumétodo protegido é visível tantoà classe a que ele pertence,como também às suas subclasses e classes do mesmo pacote.
Descartamos o ítem “c”, já que umatributooumétodo privado é vísivel somente na classe a que ele pertence.
O ítem “d” esta incorreto, porque qualquer método pode acessarqualquer atributo declarado na classe a que ele pertence.
O ítem “e” é incorreto pelo mesmo motivo do ítem “d”.
Assim, só nos resta o ítem “a”, que esta perfeitamente correto, já que atributos e métodos publicos são visíveistanto em sua própria classe, como em suas subclasses e classes clientes a que ele pertence.
Analisando esses dois itens, eliminamos a letra a. Já que o tempo do algoritmo é O(log n) para o tempo médio.