O verdadeiro objetivo do encapsulamento é reunir em um único local o conhecimento relacionado ao dispositivo de uma determinada entidade, as regras de manuseio e operações com ele. O encapsulamento apareceu muito antes do que se pensava. Módulos em programas C são encapsulamento. As rotinas do assembler são encapsulamento.
O oposto do encapsulamento é a disseminação do conhecimento sobre o funcionamento de algo ao longo do programa.
Ao implementar o comportamento, às vezes escolhemos entre várias opções equivalentes. No futuro, o peso de uma das opções rejeitadas poderá aumentar sob a influência de circunstâncias alteradas; a opção escolhida e implementada anteriormente ficará sem êxito. Alterar a decisão será muito mais fácil se absolutamente todos os detalhes da implementação da opção selecionada estiverem concentrados em um único local.
Exemplo: trabalhe com valores monetários. Não é segredo que em muitos sistemas de comércio eletrônico, os valores monetários são implementados como números de ponto flutuante. Penso que todos sabemos que, com a simples adição de dois números "inteiros", representados como variáveis de ponto flutuante, um "ligeiramente não inteiro" pode se formar. Portanto, com essa implementação, é necessário inserir uma chamada de função de arredondamento aqui e ali. Esta é a mancha de conhecimento sobre a estrutura da entidade ao longo do programa. O encapsulamento, neste caso, é coletar (ocultar) em um só lugar o conhecimento de que o dinheiro é representado como um valor de ponto flutuante e que ele precisa ser arredondado constantemente durante as operações mais inocentes. Esconda-se para que, ao usar a entidade “dinheiro”, a questão do arredondamento nem sequer entre. Com o encapsulamento, não haverá problema em substituir a implementação de "dinheiro" de um número de ponto flutuante para um número de ponto fixo.