Evgenii Legotckoi
15 вересня 2017 р. 01:05

C++ - Підручник 009. Модульність

Ключовим моментом під управлінням взаємодією різних елементів у C++ програмі є розмежування інтерфейсу компопонентів програми зі своїми реалізацією. На рівні мови C++ представляє інтерфейс у вигляді оголошень. Оголошення вказує всі необхідні частини інтерфейсу, які необхідні наприклад функції: повертається значення, аргументи, ім'я функції. Наприклад:

double sqrt(double); // функция квадратного корня, которая принимает аргументы типа double и возвращает переменную типа double

// Объявление класса со всеми необходимыми методами и участниками класса
class Vector 
{
public:
    Vector(int s);
    double& operator[](int i);
    int size();
private:
    double∗ elem; 
    int sz;
};

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

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

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

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

Vector::Vector(int s) // реализация конструктора
    : elem{new double[s]}, sz{s} // инициализация участников
{
}

double& Vector::operator[](int i) // реализация оператора доступа
{
    return elem[i];
}
int Vector::size() // реализация метод size()
{
    return sz;
}

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

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up