Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Encapsulamento de Dados em C++: Proteja Seu Código

Todos os programas C++ são compostos pelos seguintes dois elementos fundamentais:

Encapsulamento é um conceito de Programação Orientada a Objetos que une dados e funções que manipulam os dados, e que mantém ambos seguros de interferência e uso indevido externo. Encapsulamento de dados levou ao importante conceito de OOP de ocultação de dados.

Encapsulamento de dados é um mecanismo de agrupar os dados e as funções que os usam, e abstração de dados é um mecanismo de expor apenas as interfaces e ocultar os detalhes de implementação do usuário.

C++ suporta as propriedades de encapsulamento e ocultação de dados através da criação de tipos definidos pelo usuário, chamados classes. Já estudamos que uma classe pode conter membros private, protected e public. Por padrão, todos os itens definidos em uma classe são private. Por exemplo:

class Box {
public:
    double getVolume(void) {
        return length * breadth * height;
    }
private:
    double length;  // Comprimento de uma caixa
    double breadth; // Largura de uma caixa
    double height;  // Altura de uma caixa
};

As variáveis length, breadth e height são private. Isso significa que elas podem ser acessadas apenas por outros membros da classe Box, e não por qualquer outra parte do seu programa. Esta é uma forma de alcançar encapsulamento.

Para tornar partes de uma classe public (ou seja, acessíveis a outras partes do seu programa), você deve declará-las após a palavra-chave public. Todas as variáveis ou funções definidas após o especificador public são acessíveis por todas as outras funções no seu programa.

Tornar uma classe friend de outra expõe detalhes de implementação e reduz encapsulamento. O ideal é manter o máximo possível de detalhes de cada classe ocultos de todas as outras classes.

Exemplo de Encapsulamento de Dados

Qualquer programa C++ onde você implementa uma classe com membros públicos e privados é um exemplo de encapsulamento de dados e abstração de dados. Considere o seguinte exemplo:

#include <iostream>
using namespace std;
class Adder {
public:
    // construtor
    Adder(int i = 0) { total = i; }
    // interface para o mundo exterior
    void addNum(int number) { total += number; }
    // interface para o mundo exterior
    int getTotal() { return total; };
private:
    // dados ocultados do mundo exterior
    int total;
};
int main() {
    Adder a;
    a.addNum(10);
    a.addNum(20);
    a.addNum(30);
    cout << "Total " << a.getTotal() << endl;
    return 0;
}

Quando o código acima é compilado e executado, produz o seguinte resultado:

Total 60

A classe acima soma números e retorna a soma. Os membros públicos addNum e getTotal são as interfaces para o mundo exterior e um usuário precisa conhecê-los para usar a classe. O membro privado total é algo ocultado do mundo exterior, mas necessário para a classe operar corretamente.

Estratégia de Design

A maioria de nós aprendeu a tornar membros de classe private por padrão, a menos que realmente precisemos expô-los. Isso é apenas bom encapsulamento.

Isso é aplicado mais frequentemente a membros de dados, mas se aplica igualmente a todos os membros, incluindo funções virtuais.

Linguagem C

  1. Entendendo Tipos de Dados em C++: Fundamentos, Modificadores e Boas Práticas
  2. Dominando Operadores em C++: Guia Completo com Exemplos Práticos
  3. Classes e Objetos em C++: Guia Prático de Programação Orientada a Objetos
  4. Dominando Templates de Classe em C++: Um Guia Prático
  5. Dominando Encapsulamento em Java: Guia Prático de Ocultação de Dados
  6. Dominando o Tipo Char em C++: Declaração, ASCII e Técnicas de Conversão
  7. Encapsulamento em Java Explicado: Ocultação Segura de Dados e Controle
  8. Estruturas de Dados em Java: Explorando Classes Core e Collections Framework
  9. Entendendo Classes de Armazenamento em C++: Escopo, Tempo de Vida e Uso
  10. Estruturas de Dados em C++: Construindo Programas Eficientes com Arrays, Structs e Mais