Encapsulamento vs Abstração
Encapsulamento e abstração são dois conceitos diferentes, mas relacionados, encontrados em linguagens OOP (Programação Orientada a Objetos). 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 / parece em oposição a como ela é 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 os dados, certos métodos predefinidos devem ser usados. Em outras palavras, os dados encapsulados não são diretamente acessíveis. Isso garante que a integridade dos dados seja preservada, pois o usuário não pode acessar e modificar diretamente os dados como deseja. Os usuários obterão ou definirão os valores dos dados apenas por meio dos métodos que estão publicamente disponíveis para os usuários. Esses métodos geralmente fornecem validação de dados de forma que apenas os dados no formato apropriado podem ser inseridos nos campos. Portanto, os benefícios do encapsulamento são três. Por meio do encapsulamento, o programador pode tornar os campos de uma classe somente leitura ou somente gravação. Em segundo lugar,uma classe pode ter controle total sobre o que está armazenado em seus campos. Por fim, os usuários de uma classe não precisam se preocupar 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 (que são 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 de implementação. Isso é feito para que o desenvolvedor fique livre 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, em vez de como ela é implementada. A abstração essencialmente oculta os detalhes de implementação, de forma que mesmo se a metodologia de implementação mudar com o tempo, o programador não teria que se preocupar como isso afetaria seu programa. Um sistema pode ser abstraído em várias camadas ou níveis. Por exemplo, camadas de abstração de baixo nível revelarão detalhes de hardware, enquanto a abstração de alto nível apenas revelará 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 um processo, abstração significa extrair detalhes essenciais enquanto ignora os detalhes não essenciais de um item ou grupo de itens, enquanto como uma 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, que representa as características essenciais de definição de uma entidade do mundo real.o programador pode usar a palavra-chave abstract para declarar uma classe como uma entidade abstrata, que representa as características essenciais de definição de uma entidade do mundo real.o programador pode usar a palavra-chave abstract para declarar uma classe como uma entidade abstrata, que representa as características essenciais de definição de uma entidade do mundo real.
Qual é a diferença entre encapsulamento e abstração?
Mesmo que 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 escondido. Encapsulamento são as técnicas para empacotar a informação de forma que torne visível o que deveria estar visível e oculte o que deveria estar oculto. Em outras palavras, o encapsulamento pode ser identificado como uma etapa além da abstração. Enquanto a abstração reduz um objeto do mundo real às suas características definidoras essenciais, o encapsulamento estende essa ideia modelando e vinculando essa funcionalidade dessa entidade.