Encapsulamento vs Abstração
Encapsulamento e Abstração são dois conceitos diferentes, mas relacionados, encontrados nas linguagens OOP (Object Oriented Programming). Encapsulamento é o conceito de combinar dados e comportamento juntos como uma única entidade. Por outro lado, Abstração é o processo de apresentar como uma entidade se comporta \ em vez de como é implementada.
O que é encapsulamento?
Encapsulamento é o processo de agrupar dados e operações que operam neles em uma única entidade. Isso significa essencialmente que, para acessar dados, certos métodos predefinidos devem ser usados. Em outras palavras, dados encapsulados não são diretamente acessíveis. Isso garante que a integridade dos dados seja preservada, porque o usuário não pode acessar e modificar diretamente os dados conforme desejar. Os usuários obterão ou definirão os valores dos dados somente através dos métodos que estão disponíveis publicamente para os usuários. Esses métodos geralmente fornecem validação de dados para que apenas os dados no formato apropriado possam ser inseridos nos campos. Portanto, os benefícios do encapsulamento são três vezes maiores. Por meio do encapsulamento, o programador pode tornar os campos de uma classe somente leitura ou gravação. Em segundo lugar, uma classe pode ter controle total sobre o que é armazenado em seus campos. Finalmente, os usuários de uma classe não precisam se preocupar em como seus dados estão sendo armazenados. Em Java, o programador pode declarar todas as variáveis de instância como privadas e fornecer métodos get e set (públicos) para acessar e modificar os campos privados.
O que é Abstração?
Abstração é o processo de separar os detalhes da apresentação dos detalhes da implementação. Isso é feito para que o desenvolvedor fique isento dos detalhes de implementação mais complexos. Em vez disso, o programador pode se concentrar na apresentação ou nos detalhes comportamentais da entidade. Em termos simples, a abstração se concentra em como uma determinada entidade pode ser usada e não em como é implementada. A abstração oculta essencialmente os detalhes da implementação, para que, mesmo que a metodologia de implementação mude ao longo do tempo, o programador não precise se preocupar em como isso afetaria seu programa. Um sistema pode ser abstraído em várias camadas ou níveis. Por exemplo, as camadas de abstração de baixo nível revelarão detalhes do hardware, enquanto a abstração de alto nível revelará apenas a lógica de negócios da entidade. O termo abstração pode ser usado para se referir a uma entidade e a um processo e isso leva a alguma confusão. Como processo, abstração significa extrair detalhes essenciais, ignorando os detalhes não essenciais de um item ou grupo de itens, enquanto entidade, abstração significa um modelo ou uma visão de uma entidade com apenas os detalhes essenciais. Em Java, o programador pode usar a palavra-chave abstract para declarar uma classe como uma entidade abstrata, o que representa as características definidoras essenciais de uma entidade do mundo real.
Qual é a diferença entre Encapsulamento e Abstração?
Embora Encapsulamento e Abstração sejam conceitos altamente relacionados encontrados em linguagens de programação orientada a objetos, eles têm diferenças importantes. A abstração é uma técnica que nos ajuda a identificar o que deve ser visível e o que deve ser oculto. Encapsulamento é as técnicas para empacotar as informações, de modo a tornar visível o que deve ser visível e ocultar o que deve ser oculto. Em outras palavras, o encapsulamento pode ser identificado como um passo além da abstração. Embora a abstração reduza um objeto do mundo real às suas características definidoras essenciais, o encapsulamento estende essa idéia modelando e vinculando essa funcionalidade dessa entidade.