Latest web development tutorials

C ++ encapsulamento de dados

Todos os programas em C ++ tem dois elementos básicos:

  • instruções de programa (código): Esta é parte de um programa para executar uma ação, eles são chamados de funções.
  • Programa de dados: Os dados são informações sobre o programa, funções do programa serão afetados.

Encapsulamento é um conceito de programação orientada a objetos nos dados de função e manipulação de dados ligadas entre si, de modo a evitar a interferência externa e uso indevido, garantindo assim a segurança. encapsulamento de dados saem de outros importantes conceitos OOP, nomeadamente,ocultação de dados.

encapsulamento de dados é um mecanismo para funcionar dados e manipulação de dados abstração de dadosfornecido apenas um está exposto aos interfaces de usuário e os detalhes de implementação mecanismo escondidos.

Ao criar um C ++ encapsulamento suporte declasse e os dados escondendo (público, protegido, privado).Nós já sabemos que a classe contém membros privados (particulares), para proteger os membros da (protegida) e membros dos membros públicos (públicas). Por padrão, todos os itens definidos na classe são privados. Por exemplo:

class Box
{
   public:
      double getVolume(void)
      {
         return length * breadth * height;
      }
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};

comprimento variável, largura e altura são privados (private). Isso significa que eles só podem ser acessados ​​por outros membros da classe Box, você não pode acessar outras partes do programa. Esta é uma maneira de conseguir pacote.

Para se tornar um membro da classe pública (isto é, outras partes do programa podem acessar), você deve usar a palavra-chavepública antes deesses membros são declarados. Todos os identificadores são definidos no público atrás da variável ou função podem ser utilizados por todas as outras funções para aceder ao programa.

A classe é definida como um amigo de outra classe, ele iria expor detalhes de implementação, reduzindo assim o encapsulamento. Idealmente, tanto quanto possível, elementos fora hide implementação de cada classe.

Exemplos de pacotes de dados

C ++ programa, qualquer classe com membros de dados públicos e privados podem ser usados ​​como exemplos de encapsulamento e abstração de dados. Considere os seguintes exemplos:

#include <iostream>
using namespace std;

class Adder{
   public:
      // 构造函数
      Adder(int i = 0)
      {
        total = i;
      }
      // 对外的接口
      void addNum(int number)
      {
          total += number;
      }
      // 对外的接口
      int getTotal()
      {
          return total;
      };
   private:
      // 对外隐藏的数据
      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, ele produz os seguintes resultados:

Total 60

A classe acima dos números juntos e retorna a soma. Membro PúblicaaddNum e getTotalé interface externa, os usuários precisam saber para usar sua classe. membros privados externatotal está escondido, os usuários não precisam entender isso, mas é um trabalho de classe normais necessário.

Estratégia de design

Em circunstâncias normais, vamos configurar um estado membro da classe privada (private), a menos que realmente precisa ser exposto, de modo a garantiruma boa encapsulamento.

Este é normalmente aplicado aos membros de dados, mas é igualmente aplicável a todos os membros, incluindo funções virtuais.