Latest web development tutorials

C ++ абстракции данных

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

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

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

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

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

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

В C ++, мы используем наш собственныйкласс , чтобы определить абстрактный тип данных (ADT).Вы можете использовать классostream COUTобъекта для вывода данных на стандартный вывод, следующим образом :

#include <iostream>
using namespace std;

int main( )
{
   cout << "Hello C++" <<endl;
   return 0;
}

Здесь, вы не понимаете , как текстсоиЬ отображается на экране пользователя.Вам нужно только знать публичный интерфейс, соиЬ базовой реализации можно свободно изменять.

Вкладка Доступ обязательным Аннотация

В C ++, мы используем вкладку Доступ для определения абстрактного класса интерфейса. Класс может содержать ноль или более доступа метки:

  • Тег определяет использование публичных членов может получить доступ ко всем частям программы. Абстрактный вид типа данных является публичным путем определены ее членами.
  • Использование частной торговой маркой определяется с помощью членов класса не могут иметь доступ к коду. Отдельная часть кода, используя тип деталей реализации скрыть.

Частота доступа тег появляется там нет предела. Каждая метка определяет доступ с последующим членами определенных уровней доступа. Назначенный уровень доступа будет оставаться в силе до следующей вкладке встречи Access или закрыть правильный тип тела встречается в круглых скобках.

абстракции данных Преимущества

абстракции данных имеет два важных преимущества:

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

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

Абстрактные данные экземпляра

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является внешний интерфейс, пользователи должны знать, чтобы использовать свой класс. Частные членывсего пользователям не нужно знать, но класс может работать надо.

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

Аннотация для разделения кода в интерфейс и реализацию. Таким образом, при проектировании компонентов, интерфейс должен оставаться независимым от реализации, так что если вы измените лежащую в основе реализацию, интерфейс останется неизменным.

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