Diferença entre abstração e encapsulamento

Definição de Abstração

Abstração é um conceito OOP que se concentra apenas nos dados relevantes de um objeto. Ele oculta os detalhes do plano de fundo e enfatiza os pontos de dados essenciais para reduzir a complexidade e aumentar a eficiência. Geralmente, retém apenas as informações mais relevantes para aquele processo específico. O método de abstração concentra-se principalmente na ideia em vez do funcionamento real.

Neste tutorial, você aprenderá

Definição de encapsulamento

O encapsulamento é um método que torna um sistema complexo mais fácil de manusear para os usuários finais. O usuário não precisa se preocupar com detalhes internos e complexidades do sistema. O encapsulamento é um processo de agrupar os dados e o código, que opera nos dados em uma única entidade. Você pode assumi-lo como um invólucro protetor que interrompe o acesso aleatório ao código definido fora desse invólucro.

Abstração vs. Encapsulamento



DIFERENÇA CHAVE

  • A abstração mostra apenas dados úteis, fornecendo os detalhes mais necessários, enquanto o encapsulamento envolve o código e os dados para obter as informações necessárias.
  • A abstração está focada principalmente no que deve ser feito, enquanto o Encapsulamento está focado em como deve ser feito.
  • A abstração oculta a complexidade fornecendo uma imagem mais abstrata, enquanto o encapsulamento oculta o trabalho interno para que você possa alterá-lo posteriormente.
  • A abstração ajuda a particionar o programa em muitas partes independentes, enquanto o encapsulamento é fácil de alterar com novos requisitos.
  • A abstração resolve o problema no nível de design, enquanto o encapsulamento resolve o problema no nível de implementação.
  • A abstração oculta os detalhes irrelevantes encontrados no código, enquanto o Encapsulamento ajuda os desenvolvedores a organizar todo o código facilmente.

Por que você precisa de abstração?

Aqui estão as principais razões pelas quais a abstração é necessária para a Programação Orientada a Objetos:

  • Ajuda a simplificar a representação dos modelos de domínio.
  • A abstração oculta os detalhes irrelevantes encontrados no código.
  • A abstração ajuda a particionar o programa em muitos conceitos independentes.
  • Oferece a maior flexibilidade ao usar objetos ADT (Abstract Data Type) em diferentes situações

Por que você precisa de encapsulamento?

As principais vantagens do encapsulamento são

  • Além disso, melhora a manutenção de um aplicativo.
  • Oferece flexibilidade para o usuário usar o sistema com muita facilidade
  • Ajuda os desenvolvedores a organizar melhor o código
  • Facilita o processo geral de codificação, pois você está preocupado apenas com o que a outra classe faz, não como ela faz
  • Este método ajuda os desenvolvedores a serem mais 'objetivos' e orientados para os resultados.
  • O código encapsulado é bastante flexível e fácil de alterar com novos requisitos.
  • O encapsulamento facilita o teste de unidade.
  • Ele permite que você reduza o acoplamento de módulos e aumenta a coesão dentro de um módulo, já que todas as partes de uma coisa são encapsuladas em um só lugar.
  • O encapsulamento ajuda a alterar uma parte do código sem afetar outras partes do código.
  • Melhora a legibilidade do código do aplicativo
  • Maior segurança e torna a manutenção do aplicativo mais fácil
  • A interface de encapsulamento permite apenas uma interação bem definida.

Exemplo de abstração

Suponha que você queira criar um aplicativo bancário e seja solicitado a coletar todas as informações sobre seu cliente. É possível que você obtenha as seguintes informações sobre o cliente.

Porém, nem todas as informações acima são necessárias para criar um aplicativo bancário.

Portanto, você precisa selecionar apenas as informações úteis para seu aplicativo bancário desse pool. Dados como nome, endereço, informações fiscais etc. fazem sentido para um aplicativo bancário.

Como buscamos / removemos / selecionamos as informações do cliente de um pool maior, o processo é denominado Abstração.

No entanto, as mesmas informações, uma vez extraídas, podem ser usadas para uma ampla gama de aplicações. Por exemplo, você pode usar os mesmos dados para aplicativos de hospitais, aplicativos de portal de empregos, bancos de dados do governo, etc., com pouca ou nenhuma modificação. Portanto, eles se tornam seus dados principais. Esta é uma vantagem da Abstração.

Exemplo de encapsulamento

Vamos dar um exemplo de dispositivo móvel. Com a ajuda de dispositivos móveis, você pode executar várias funções como tirar uma foto, enviar uma mensagem, gravar vídeo / áudio, acessar a web e muito mais.

Os recursos mencionados acima são funcionalidades da maioria dos smartphones. No entanto, você não precisa entender os detalhes do funcionamento interno desses recursos antes de usar este programa. Por exemplo, você não precisa saber como sua câmera calcula a correção de gama ou identifica um rosto humano em uma imagem. Você só precisa aprender a interface do software. Isso é encapsulamento.

Abstração vs. Encapsulamento

Parâmetro Abstração Encapsulamento
Use paraA abstração resolve o problema e as questões que surgem na fase de design.O encapsulamento resolve o problema e a questão que surgem na fase de implementação.
FocoA abstração permite que você se concentre no que o objeto faz em vez de como o fazO encapsulamento permite ocultar o código e os dados em uma única unidade para proteger os dados do mundo externo.
ImplementaçãoVocê pode usar abstração usando Interface e Classe Abstrata.Você pode implementar o encapsulamento usando modificadores de acesso (público, protegido e privado).
FocalizaConcentre-se principalmente no que deve ser feito.Concentre-se principalmente em como isso deve ser feito.
AplicativoDurante o nível de design.Durante o nível de implementação.