O que é ocultação de dados em C++? Abstração e encapsulamento explicados

Publicados: 2021-05-24

Índice

Introdução à ocultação de dados

Os dados são o componente mais sensível e volátil de um programa, que, se manipulado, pode resultar em uma saída incorreta e prejudicar a integridade dos dados. É aqui que a ocultação de dados se mostra essencial. No jargão técnico, a ocultação de dados, também conhecida como ocultação de informações, é um mecanismo de programação orientado a objetos (OOP) inerente para ocultar detalhes de objetos internos do usuário final.

O objetivo subjacente da ocultação de dados é ocultar dados dentro de uma classe de acesso não autorizado e evitar penetração desnecessária de fora da classe. A ocultação de dados garante acesso restrito aos dados para garantir a integridade do objeto e evitar alterações não intencionais ou intencionais no programa em questão.

Simplificando, a ocultação de dados pega certas partes de um código de programa e as separa dos membros do objeto. Se um membro do objeto estiver tentando acessar dados ocultos, o programa retornará um erro. Este é um mecanismo de precaução introduzido para garantir que o programador se abstenha de se conectar a dados errôneos que foram ocultos. Muitas vezes, são os componentes internos sem necessidade previsível do lado do usuário que estão ocultos.

Ocultação de dados, abstração de dados e encapsulamento de dados

A ocultação de dados em C++ está intimamente correlacionada a duas outras propriedades OOP - abstração e encapsulamento.

Abstração de dados

A abstração de dados é um mecanismo para expor apenas a interface do programa relevante ao usuário final e ocultar os detalhes de implementação mais intrincados e complexos. Vamos considerar um exemplo da vida real para melhor compreensão. Considere a sua televisão. Você pode ligar e desligar a televisão, mudar o canal, ajustar o volume e adicionar componentes externos, como videocassetes, DVD players e alto-falantes. Mas você não conhece os mecanismos internos da televisão.

Você não percebe como ele recebe sinais, os traduz e, finalmente, exibe a saída. Assim, a televisão é um exemplo adepto da separação entre implementação interna e influência externa. Com a abstração de dados, a implementação de classe é protegida contra erros inadvertidos e evolui em resposta a mudanças de requisitos ou relatórios de bugs sem interferência no nível do usuário.

Encapsulamento de dados

O encapsulamento de dados refere-se ao agrupamento de dados e suas funções relacionadas em uma única unidade chamada classe. Ou seja, se você tiver um atributo invisível do lado de fora de um objeto e agrupá-lo com métodos que fornecem acesso de leitura ou gravação a ele, poderá ocultar informações delicadas e regular o acesso ao estado interno da coisa.

Portanto, dependendo dos métodos implementados, você tem o ônus de decidir se um atributo pode ser lido e alterado ou se é somente leitura ou não é visível.

Diferença entre ocultação de dados e encapsulamento de dados

Ao discutir OOP, ocultação de dados e encapsulamento de dados são frequentemente usados ​​de forma intercambiável porque ambas as noções cooperam para realizar um gatekeeper auxiliar de objetivo comum de informações confidenciais. A ideia de encapsulamento de dados é, sem dúvida, funcionalmente comparativa à ocultação de dados, mas como eles funcionam em níveis diferentes, são estruturalmente diferentes.

Embora intrinsecamente relacionados entre si, existe uma diferença crucial entre ocultação de dados e encapsulamento de dados.

  1. A principal diferença entre ocultação de dados e encapsulamento é que o primeiro se concentra em aumentar a segurança dos dados no programa, enquanto o segundo trata de ocultar a complexidade do programa.
  2. A ocultação de dados concentra-se na acessibilidade de um membro de objeto dentro de uma classe, enquanto o encapsulamento de dados se concentra em como os dados são acessados ​​e como os diferentes objetos se comportam. O encapsulamento é realizado principalmente através da ocultação de informações e não apenas da ocultação de informações. Isso significa que o programador oculta as estruturas do membro objeto e oculta a implementação de todos os seus métodos.
  3. Enquanto a ocultação de dados se concentra em restringir o uso de dados em um programa para garantir a segurança dos dados, o encapsulamento de dados se concentra em agrupar (ou encapsular) os dados complexos para apresentar uma visão mais simples ao usuário.
  4. Na ocultação de dados, os dados devem ser definidos apenas como privados. No encapsulamento de dados, os dados podem ser públicos ou privados.
  5. A ocultação de dados é um processo e uma técnica em si, enquanto o encapsulamento de dados é um subprocesso na ocultação de dados.

Especificadores de acesso

C++ suporta ocultação de dados e, por extensão, abstração de dados e encapsulamento de dados por meio da criação de tipos definidos pelo usuário, conhecidos como classes. O escopo dos membros dessa classe criada é definido por palavras-chave conhecidas como especificadores de acesso. Normalmente, existem três tipos de especificadores de proteção ou acesso disponíveis em uma categoria – privado, protegido e público, usados ​​para construir os recursos de encapsulamento da classe.

Os especificadores de acesso ajudam a definir como as variáveis ​​e funções de um tipo podem ser acessadas de fora da classe. Normalmente, os dados dentro de uma classe são privados para eliminar instâncias de manipulação acidental e suas operações são públicas. No entanto, a acessibilidade dentro de uma classificação não está vinculada a nenhuma restrição.

Variáveis/funções privadas: só podem ser acessadas por membros definidos como parte da classe.

Variáveis/funções públicas: Podem ser acessadas de qualquer lugar do programa.

Variáveis/funções protegidas São privadas dentro de uma classe e estão disponíveis apenas para acesso remoto na classe derivada.

Aplicação de ocultação de dados

Para entender melhor a ocultação de dados, vamos considerar o exemplo a seguir. Considerando que você é o programador, vamos supor que você declare uma classe com o nome 'CheckAccount', na qual você definiu um membro de dados pelo termo 'Saldo', que se refere ao saldo da conta bancária de um usuário.

Neste exemplo específico, o membro de dados 'Balance' é uma informação sensível. Embora você possa oferecer acesso a aplicativos externos para visualizar essas informações confidenciais, muito provavelmente, você não permitirá que esse aplicativo externo altere os atributos dos dados armazenados no 'Saldo' do membro.' Esse resultado pode ser obtido usando a ocultação de dados e, mais especificamente, é controlado pelo uso do especificador de acesso privado.

  1. A ocultação de dados geralmente é executada em dados imprevisíveis e delicados. Este tipo de dados é fundamental para executar um programa de forma eficaz e rápida. Devido ao acesso indevido, os dados de alterações de dados resultantes são permanentes e exigem um retrabalho completo por parte do programador antes do uso posterior.
  2. A ocultação de dados ajuda a proteger os alunos contra esquecimentos não intencionais. Uma classe geralmente compreende vários campos relacionados que devem estar em um estado confiável. Suponha que um programador tenha permissão para controlar qualquer um desses campos diretamente. Nesse caso, existe a possibilidade de você transformar uma área sem alterar os campos relacionados críticos, deixando sua classe em estado de conflito.

Benefícios da ocultação de dados

Os benefícios da ocultação de dados são múltiplos:

  1. Ele é usado para reduzir a imprevisibilidade e a complexidade dos dados.
  2. Melhora a reutilização do programa.
  3. Ao limitar as interdependências entre os componentes de software, também reduz a complexidade do sistema para aumentar a robustez.
  4. Oculta o design de armazenamento físico para os dados. Isso ajuda a definir a interface com clareza, melhora a legibilidade e a compreensão.
  5. Ele fornece garantia de dados contra corrupção e acesso injustificado. Em outras palavras, ajuda a ocultar dados importantes, garantindo protocolos de segurança aprimorados contra hackers. Se todos os dados internos fossem tornados públicos, os hackers poderiam facilmente penetrar nos dados internos e fazer alterações maliciosas para alterar o funcionamento do programa. Ocultar os dados torna muito mais difícil decifrar o código porque os dados ocultos parecerão invisíveis para membros externos da classe e, portanto, para o hacker.
  6. As classes encapsuladas são diretas, fáceis de gerenciar e facilitam o desenvolvimento futuro do aplicativo.

A desvantagem de ocultar dados

A única desvantagem da ocultação de dados é a codificação extra. A ocultação de dados exige que os programadores escrevam códigos mais longos para criar o efeito desejado nos dados ocultos.

Aprenda cursos de engenharia de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Conclusão

A ocultação de dados é semelhante a um jogo de roleta russa. Na Roleta Russa, apenas um em cada seis buracos tem uma bala. Vamos imaginar que o tiro é uma ameaça de dados perceptível. Você estaria disposto a arriscar? Pode haver cinco cenários que funcionam a seu favor, mas você pode identificar especificamente a ameaça? A resposta é não. Todos os cenários carregam uma carga probabilística igual de suspeita e medo. Em vez de ceder a essa incerteza, tome uma posição contra as ameaças de dados. Vá disfarçado com ocultação de dados.

Se você estiver interessado em aprender mais sobre Java, OOPs e desenvolvimento de software full-stack, confira o Programa PG Executivo do upGrad & IIIT-B em Desenvolvimento de Software Full-stack, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, Mais de 9 projetos e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.

O que é encapsulamento na programação orientada a objetos?

O encapsulamento é uma maneira de unir os dados e o código que opera nos dados. É um mecanismo usado para ocultar os detalhes de implementação de dados enquanto expõe a abstração de dados ao mundo exterior. O processo de ocultar informações por trás de uma interface bem definida é conhecido como encapsulamento. O encapsulamento é um conceito poderoso de programação orientada a objetos. É o processo de ocultar dados internos e operações de um objeto do mundo exterior, criando funções de acesso.

O que é abstração na programação orientada a objetos?

A abstração é uma técnica usada na Programação Orientada a Objetos para separar as interfaces das classes dos detalhes de implementação de cada objeto individual. Isso significa que o código pode ser alterado sem alterar o código que usa a classe. Na programação orientada a objetos (OOP), uma abstração representa um objeto que pode ser manipulado, mas não definido explicitamente. A abstração é uma parte importante da POO; é o processo de separar a interface de uma classe da implementação de seus métodos.

Como classes e objetos interagem na programação orientada a objetos?

Classes e objetos são a base da programação orientada a objetos (OO). A programação orientada a objetos é um paradigma de programação, que usa objetos e classes para modelar o mundo real. Uma classe é um modelo ou um modelo. É uma descrição ou especificação do que um objeto deve ser. Ele define as características, comportamentos e dados de um determinado tipo de objeto. Objetos são instâncias ou exemplos de uma classe. Todo e qualquer objeto em um programa pode ser classificado em uma ou mais classes. Uma classe pode herdar as propriedades, métodos e outras características de outra classe. Isso é chamado de herança.