Eu responderei sua pergunta com uma pergunta; quando você dirigiu para o trabalho hoje de manhã (presumo que o fez de fato), você se importou exatamente como o motor abriu as válvulas para permitir a entrada de misturas de combustível e ar e as acendeu? Não. Você não se importa com o funcionamento do motor do seu carro quando está dirigindo pela estrada. Você se importa que ele faz o trabalho.
Suponha que um dia seu carro não funcione. Não começa, joga uma vara, quebra um cinto, inexplicavelmente entra nessa barreira de concreto sem culpa sua enquanto você estava ocupado, enviando mensagens de texto. Agora, você precisa de um carro novo (pelo menos temporariamente). Você se importa exatamente como esse novo carro funciona? Não. O que mais lhe interessa é que ele funcione, e depois que você pode usar o mesmo conhecimento e habilidades que usou para dirigir seu carro antigo para dirigir o novo. Idealmente, deve parecer que não houve alteração no carro que você está dirigindo. Realisticamente, a maneira como este novo carro funciona deve lhe dar o mínimo de "surpresas" possível.
Esses princípios básicos são o princípio básico por trás do encapsulamento e da abstração. O conhecimento de como um objeto faz o que faz não deve ser um requisito para usá-lo para fazer o que faz. Mesmo na programação de computadores, os detalhes dos caminhos elétricos na CPU executando o programa são abstraídos por pelo menos meia dúzia de camadas de instruções de E / S, drivers, software do SO e tempo de execução. Muitos engenheiros de software bem-sucedidos escrevem um código perfeitamente bom sem se preocupar com a arquitetura exata de hardware ou com a compilação do sistema operacional que o executará. Incluindo eu.
O encapsulamento / ocultação de informações permite a mentalidade "não se importa com o que acontece, apenas se preocupa com isso". Seu objeto deve expor o que é útil para o consumidor, de uma maneira que ele possa consumir facilmente. Agora, de volta ao mundo real, isso não significa que um carro não deva fornecer ao usuário informações sobre o funcionamento interno ou que ele só deve permitir ao usuário as funcionalidades mais básicas, como ignição, volante, e pedais. Todos os carros têm velocímetros e indicadores de combustível, tacômetros, luzes idiotas e outros comentários. Praticamente todos os carros também possuem interruptores para vários subsistemas independentes, como faróis, piscas, rádio, ajuste de assentos, etc. Alguns carros permitem uma entrada bastante esotérica do usuário, como a sensibilidade do diferencial central de escorregamento limitado. Em todos os casos, se você souber o suficiente, você pode abri-lo e mudar as coisas para que funcione de uma maneira um pouco diferente. Mas, na maioria dos casos, talvez, apenas talvez, o usuário não consiga controlar direta e independentemente as bombas de combustível de dentro da cabine? Talvez, apenas talvez, o usuário não consiga ativar as luzes de freio sem pressionar o pedal do freio?
A abstração permite que "isso não é o mesmo que isso, mas, porque ambos são XI, podem usá-los como faria com qualquer X". Se seu objeto herda ou implementa uma abstração, seus consumidores devem esperar que sua implementação produza o mesmo resultado ou semelhante a outras implementações conhecidas da abstração. Um Toyota Camry e um Ford Fusion são "carros". Como tal, eles têm um conjunto comum de funcionalidades esperadas, como um volante. Gire no sentido anti-horário, o carro vai para a esquerda. Gire no sentido horário, o carro vai para a direita. Você pode entrar em qualquer carro nos Estados Unidos e esperar que o carro tenha um volante e pelo menos dois pedais, o da direita sendo o pedal "carro vai" e o do centro o pedal "carro pára" .
Um corolário da abstração é a "teoria do mínimo espanto". Se você pegasse o volante de um carro novo para um test drive, girasse o volante no sentido horário e o carro virasse para a esquerda, você ficaria surpreso em dizer o mínimo. Você acusaria o revendedor de vender um PDV e provavelmente não ouviria nenhuma das razões pelas quais o novo comportamento é "melhor" do que você está acostumado, ou quão bem esse comportamento é "documentado" ou como " transparente "o sistema de controle é. Apesar deste carro novo e de todos os outros que você dirigiu ainda serem "carros", ao dirigir esse carro, você precisa alterar alguns conceitos fundamentais de como um carro deve ser dirigido para dirigir com sucesso o novo carro. Isso normalmente é uma coisa ruim, e isso só acontece quando há uma vantagem intuitiva para o novo paradigma. Talvez a adição de cintos de segurança seja um bom exemplo; Há 50 anos, você entrou e foi embora, mas agora precisa apertar o cinto, a vantagem intuitiva é que você não entra no pára-brisa ou no banco do passageiro se sofrer um acidente. Mesmo assim, os motoristas resistiram; muitos proprietários de automóveis cortam os cintos de segurança do carro até que sejam aprovadas leis exigindo seu uso.