Diferença entre Abstração e Encapsulamento

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.

O que é Abstração?

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.

O que é encapsulamento?

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.

Diferença entre Abstração e Encapsulamento

Embora ambos sejam conceitos fundamentais relacionados ao POO e sejam tecnicamente inseparáveis, eles ainda têm suas diferenças em muitos aspectos.

  1. Diferenças na "definição" de abstração e encapsulamento - Abstração é um conceito fundamental de POO que enfatiza todos os aspectos essenciais de um objeto, ocultando detalhes irrelevantes para aumentar a eficiência e eliminar a complexidade. O encapsulamento, por outro lado, é um mecanismo de ocultação de dados que agrupa os dados e as informações em uma cápsula para restringir o acesso do mundo exterior.
  2. Diferenças na "funcionalidade" de abstração e encapsulamento- Abstração é um mecanismo de ocultação de dados que destaca apenas os recursos essenciais para simplificar programas complexos, enquanto o encapsulamento, por outro lado, é um método de vincular dados e códigos em uma única entidade. A idéia é proteger os detalhes da implementação do acesso externo.
  3. Diferenças na “implementação” de abstração e encapsulamento - A abstração é implementada usando classe e interface abstratas, enquanto o encapsulamento é implementado usando modificadores de acesso. Cinco tipos de modificadores são usados ​​para encapsular dados: Privado, Público, Interno, Protegido e Interno Protegido.
  4. Diferenças no "Conceito" de abstração e encapsulamento- A idéia por trás da abstração é focar no que e não como. O encapsulamento esconde a mecânica interna de como. Por exemplo, quando você dirige um carro, você sabe exatamente o que o pedal do freio faz, mas pode não conhecer todo o mecanismo por trás dele, porque os dados estão encapsulados.
  5. Diferenças no “exemplo” de abstração e encapsulamento - Vamos dar um exemplo de um smartphone. Você sabe o que faz, mas pode não saber como faz o que faz. Você se preocupa apenas com os botões da tela e do teclado, em vez de se preocupar com o circuito interno. Aqui, smartphone é um resumo em que os detalhes da implementação interna são encapsulados.

Abstração vs. Encapsulamento com a tabela de comparação

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.

Sumário

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.