Evgenii Legotckoi
15 сентября 2017 г. 1:05

C++ - Урок 009. Модульность

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

  1. double sqrt(double); // функция квадратного корня, которая принимает аргументы типа double и возвращает переменную типа double
  2.  
  3. // Объявление класса со всеми необходимыми методами и участниками класса
  4. class Vector
  5. {
  6. public:
  7. Vector(int s);
  8. double& operator[](int i);
  9. int size();
  10. private:
  11. double elem;
  12. int sz;
  13. };

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

Например, реализация функции квадратного корня:

  1. double sqrt(double d) // definition of sqrt()
  2. {
  3. // ... алгоритм нахождения квадратного корня ...
  4. }

Также для класса Vector потребуется реализовать несколько участников:

  1. Vector::Vector(int s) // реализация конструктора
  2. : elem{new double[s]}, sz{s} // инициализация участников
  3. {
  4. }
  5.  
  6. double& Vector::operator[](int i) // реализация оператора доступа
  7. {
  8. return elem[i];
  9. }
  10. int Vector::size() // реализация метод size()
  11. {
  12. return sz;
  13. }

Мы должны определить функции Vector, но не sqrt (), поскольку она является частью стандартной библиотеки. Однако это не имеет никакого значения: библиотека - это просто какой-то «другой код, который мы используем», написанный с теми же языковыми средствами, что и мы.

Рекомендуемые статьи по этой тематике

По статье задано0вопрос(ов)

0

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь