Abstração e encapsulamento são conceitos básicos de programação orientada a objetos (OOP) que permitem implementar objetos do mundo real em programas e códigos. Enquanto ambos andam de mãos dadas, eles são muito diferentes um do outro. Embora todo método seja um encapsulamento, também é uma abstração. Em termos simples, quando você junta coisas diferentes para criar uma entidade, na verdade você cria um conceito - um resumo. Embora ambos sejam tecnicamente inseparáveis, eles não têm literalmente nada em comum. É quase verdade que todo encapsulamento é uma abstração porque ambos escondem algo, no entanto, eles têm seu quinhão de diferenças.
Abstração é um conceito básico de POO que se concentra apenas nos dados relevantes de um objeto e oculta todos os detalhes irrelevantes que podem ou não ser para comportamento genérico ou especializado. Oculta os detalhes do plano de fundo e enfatiza os pontos essenciais para reduzir a complexidade e aumentar a eficiência. Basicamente, a abstração é uma ferramenta de programação para gerenciar a complexidade. A abstração se concentra mais em idéias do que em eventos. Ele oculta os detalhes no nível do design, fornecendo funcionalidade aos usuários. O objeto resultante também pode ser chamado de abstração. O programador garante que a entidade nomeada tenha todos os aspectos essenciais incluídos e nenhum dos irrelevantes.
Vamos dar um exemplo do mundo real de abstração. Vamos considerar o caso de um veículo, que neste caso é o seu veículo. Um mecânico tenta consertar seu carro ou, digamos, uma parte específica do seu carro. Aqui, você é o usuário e não deseja conhecer as especificidades do seu carro ou qual parte realmente quebrou. Você realmente não se importa com essas coisas; você só quer o seu veículo de volta à sua condição original sem se preocupar com os detalhes. Então, você realmente disse ao mecânico o que deseja, segregando a parte da implementação. Isso é abstração. Você se concentrou na coisa mais essencial, que é consertar seu carro, em vez de focar nas especificidades.
Encapsulamento é outro conceito de POO que liga dados e funções em um único componente enquanto restringe o acesso a alguns componentes. É um dos principais conceitos fundamentais de POO que agrupa dados e informações em uma única unidade. Em termos técnicos, encapsulamento significa ocultar atributos para proteger variáveis de acesso externo, para que as alterações em uma parte de um aplicativo não afetem as outras. Pelo contrário, ao tornar as informações mais abertas, você corre o risco de usar mal os dados. Ele fornece integridade básica aos dados, protegendo-os do mundo exterior. Em termos simples, oculta os detalhes extras do mundo exterior.
Vamos dar um exemplo de mouse Bluetooth. Você só precisa saber sobre o comportamento do dispositivo sem se preocupar com os detalhes da implementação, como que tipo de sensores o mouse possui, seja ele sem fio ou não, etc. Cada detalhe descreve o mouse, mas, independentemente dos detalhes, é apenas um mouse. Você só precisa de uma interface para usar o mouse, que neste caso é o ponteiro do mouse. Isso é encapsulamento.
Embora ambos sejam conceitos fundamentais relacionados ao POO e sejam tecnicamente inseparáveis, eles ainda têm suas diferenças em muitos aspectos.
Abstração | Encapsulamento |
Ele lida apenas com os detalhes relevantes, ocultando os irrelevantes para reduzir a complexidade, aumentando assim a eficiência. | Ele une os dados e as informações em uma única entidade para proteger os dados de fontes externas. |
Refere-se à idéia de ocultar dados que não são necessários para fins de apresentação. | Ele oculta os dados e o código para restringir o acesso indesejado. |
Ele se concentra no que e não como. | Esconde a mecânica interna de como faz algo. |
Oculta os detalhes desnecessários no nível do design. | Ele também oculta os detalhes, mas no nível de implementação. |
Informações e dados são separados dos dados relevantes. | As informações estão ocultas dentro de uma cápsula para acesso próximo. |
Ele lida com idéias e não com eventos. | A idéia é proteger os dados do mundo exterior. |
É implementado usando classe abstrata e interface. | É implementado usando modificadores de acesso protegido, privado e pacote-privado. |
Embora ambos sejam conceitos de POO relacionados à ocultação de dados, eles são bem diferentes um do outro. A abstração também se refere a ocultar como encapsulamento, mas enquanto o primeiro oculta a complexidade, o último mantém os dados que encapsula controlando o acesso a eles. Abstração refere-se ao conceito de representar apenas os recursos necessários ocultando os detalhes irrelevantes para reduzir a complexidade de um aplicativo, aumentando assim a eficiência. O encapsulamento, por outro lado, refere-se ao conceito de ocultar toda a mecânica interna de um programa, a fim de proteger as informações de acessos indesejados. Ele une os dados e as informações em um único componente, restringindo o acesso a outros componentes.