A dupla Encapsulamento X Herança

Após ter entendido o processo de herança de classes, será mais fácil entender algumas vantagens propostas pelo Encapsulamento, recurso explicado anteriormente. Quando se herda uma classe, espera-se que esta esteja em seu mais perfeito funcionamento. Portanto, se por algum motivo houver algum erro durante a criação ou utilização deste novo objeto ou subclasse, muito provavelmente este erro está contido na nova ou nas novas implementações. Isso geralmente é esperado. Mas, e quando isso não acontece? E quando o erro não estiver na nova implementação?

A resposta está em como o conteúdo da classe base está encapsulado, ou seja, não temos acesso a ele, o erro está em seu processo ou concepção. O mais provável é que alguma situação não tenha sido prevista, por exemplo, um envio de mensagens mal feito, ou o não término de um determinado processo, bem como a falta tratamento de erro não previsto. Como uma classe tem que ser o mais auto-sustentável possível, as correções deverão ser feitas na classe base e não nas classes derivadas.

O que está acontecendo, na verdade, é que além de encapsularmos o conteúdo restrito da classe base, estamos também encapsulando todos os possíveis problemas que esta possa causar, fazendo com que as correções sejam mais fáceis de identificar e tratar.

O processo de Herança cuidará para que as correções sejam implementadas nas demais classes derivadas desta.

Encapsulamento

Encapsulamento é a característica de uma classe que a torna a mais independente possível.

Isso é desejável por que, como dito anteriormente, é conveniente que quando disponibilizamos uma classe, o usuário possa fazer uso desta de maneira fácil e intuitiva. Mas outro fator que é importante considerar, é que não devemos possibilitar ao usuário interferir no funcionamento de nossa classe, ou seja, devemos proteger a parte do conteúdo que é vital para o funcionamento do objeto a ser criado.

Tomando como exemplo a classe carro, é importante “liberar” ao usuário algumas opções como: acelerar, mudar a marcha, trocar o óleo e colocar combustível. Mais importante ainda é proteger a parte que trata do funcionamento do motor, o sistema de freios e todo o restante que é importante para funcionamento do objeto carro, mas não precisa estar acessível ao usuário. As razões são inúmeras e a mais importante, é proteger e garantir o perfeito funcionamento do objeto.

O conceito de encapsulamento deve ser empregado quando se quer proteger o conteúdo da classe que, por segurança ou conveniência, não deve estar acessível aos usuários desta.

Pode se perceber o emprego desse conceito em várias situações da vida real e mesmo na informática, por exemplo, quando fazemos uso de vários recursos, de várias ferramentas, sem sabermos como estas realmente funcionam internamente, e às vezes sem sequer termos acesso a essas informações.