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является внешний интерфейс, пользователи должны знать, чтобы использовать свой класс. Иностранные частные членыВсего скрыт, пользователи не должны понимать это, но это нормальный класс работы требуется.
Разработка стратегии
В нормальных условиях, мы создали государство - член частного класса (частный), если мы действительно не должны подвергаться воздействию, с тем, чтобы обеспечитьхорошую герметизацию.
Это, как правило, применяется к членам данных, но оно в равной степени применимо ко всем членам, в том числе виртуальные функции.