Cursos / Eletrônica / Programação Orientada a Objetos / Aula

arrow_back Aula 05 - Encapsulamento

Aplicando o Encapsulamento ao Exemplo

Codificar em OO usando o encapsulamento nada mais é que aplicar os modificadores de acesso às classes.

Vamos ver como está a nossa classe Agenda com relação aos modificadores.

Listagem 6 - Exemplo sem modificadores de acesso explícito

A classe Agenda não usa nenhum dos modificadores de acesso de forma explícita. Pela nossa classificação, implicitamente ele está usando o modificador de acesso Package ou Friendly. Vimos, anteriormente, que o modificador de acesso Package permite que classes do mesmo pacote acessem atributos ou métodos que estejam com tal modificador. Considerando que a nossa classe Principal está no mesmo pacote (veja sobre pacotes na classificação de Package), então, ele tem acesso aos atributos e métodos da classe Agenda.

Você pode estar se perguntando... Quando a classe Principal teve acesso aos atributos da classe Agenda?

Respondendo: veja o trecho de código da classe Principal a seguir.

Listagem 7 - Acesso direto aos métodos e atributos da classe

O método main() da classe Principal está acessando os atributos dia, mes e anotacao da classe Agenda. E modificando as informações sem passar pelo teste da validação da data. Essa falha na codificação não é aceitável.

Vamos então aplicar o encapsulamento tornando privados os atributos e o método validaData()da classe Agenda com o uso do modificador de acesso private, e permitir os acessos para os métodos anote() e mostraAnotacao(). Temos:

Listagem 8 - Adicionando explicitamente os modificadores de acesso

Agora, o compilador já não aceita usar os comandos abaixo. Isso causaria erro! Ou seja, os atributos da classe Agenda agora são privados apenas para a uso da própria classe Agenda, como mostra a listagem 9.

Listagem 9 - Encapsulamento em ação

Com essa modificação, só é possível inserir uma anotação na classe Agenda usando o método anote(). O método anote() garante que a data inserida para a anotação será validada com o método validaData(), que também é privado ao uso apenas da classe Agenda.

Uma verdade que não pode ser omitida para os programadores: você pode optar em não usar a característica de encapsulamento em seus códigos.

Mas, isso seria uma péssima prática e um sinal que você não é um programador que segue as boas práticas. Se você havia pensado nisso, reveja os conceitos e tente entender a importância do encapsulamento para seus códigos.

Versão 5.3 - Todos os Direitos reservados