Latest web development tutorials

C ++ инкапсуляция данных

Все программы на C ++ есть два основных элемента:

  • операторов программы (код): Это часть программы для выполнения действия, они называются функциями.
  • Программа Data: Данные информации о программе, функции программы будут затронуты.

Инкапсуляция является концепция объектно-ориентированного программирования в данных функции и манипулирование данными, связанными друг с другом, поэтому, чтобы избежать вмешательства извне и неправильного использования, обеспечивая тем самым безопасность. Инкапсуляция данных выходят из других важных концепций объектно - ориентированного программирования, а именноданных скрывается.

Инкапсуляция данных представляет собой механизм для данных функции и обработки данных в комплекте абстракции данныхподвергается только один для пользовательских интерфейсов и детали реализации скрытый механизм.

Создавая C ++класс поддержки инкапсуляцию и данные скрываются (публичный, защищенный, частный).Мы уже знаем, что класс содержит закрытые члены (частных), чтобы защитить членов Организации (защищенный) и члены общественных (государственных) членов. По умолчанию все элементы, определенные в классе являются частными. Например:

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

Переменная длина, ширина и высота являются частными (частные). Это означает, что они могут быть доступны только другими членами класса Box, вы не можете получить доступ к другим частям программы. Это способ достичь пакет.

Для того , чтобы стать членом общественного класса (то есть, другие части программы могут получить доступ), необходимо использоватьоткрытый ключевое слово , прежде чем эти члены объявлены.Все идентификаторы определены в обществе за переменной или функции может быть использован всеми другими функциями, чтобы получить доступ к программе.

Класс определяется как друг другого класса, было бы подвергать детали реализации, тем самым снижая инкапсуляция. В идеале, как можно больше внешних деталей реализации скрыть каждого класса.

Примеры пакетов данных

C ++, программа, любой класс с членами государственных и частных данных могут быть использованы в качестве примеров инкапсуляции и абстракции данных. Рассмотрим следующие примеры:

#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;
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Total 60

Класс выше числа вместе и возвращает сумму. Общественный членaddNum и getTotalявляется внешний интерфейс, пользователи должны знать, чтобы использовать свой класс. Иностранные частные членыВсего скрыт, пользователи не должны понимать это, но это нормальный класс работы требуется.

Разработка стратегии

В нормальных условиях, мы создали государство - член частного класса (частный), если мы действительно не должны подвергаться воздействию, с тем, чтобы обеспечитьхорошую герметизацию.

Это, как правило, применяется к членам данных, но оно в равной степени применимо ко всем членам, в том числе виртуальные функции.