Объектно-ориентированное программирование на C++. Андрианова А.А - 51 стр.

UptoLike

Объектно-ориентированное программирование на С++
Покажем на примере класса «Матрица действительных чисел»
(Matrix) использование принципа инкапсуляции. Этот класс содержит
переменные, доступ к которым может быть осуществлен только из
методов класса. Такой подход используется для того, чтобы защитить
переменные от несанкционированного доступа. Например, если дать
возможность программисту, который будет использовать класс Matrix,
изменять напрямую значения переменных для хранения размера матрицы,
то эти значения могут стать некорректными (отрицательными или очень
большими). А, выполняя то же самое с помощью методов класса, можно
включить в них проверку корректности введенных значений. Для нашего
класса таким методом может быть метод ввода матрицы. В примере
приведен фрагмент кода, в котором обрабатывается ввод некорректных
значений количества строк и столбцов матрицы.
class Matrix
{
. . .
public:
void InputMatrix()
{
cout << "Введите количество строк матрицы"
<< endl;
cin >> m;
if (m <= 0)
throw "Количество строк должно быть
положительным" << endl;
cout << "Введите количество столбцов матрицы"
<< endl;
cin >> n;
if (n <= 0)
throw "Количество столбцов должно быть
положительным ";
. . .
}
. . .
};
Помимо структурных свойств класса сокрытию подлежит и
реализация операций класса. Для пользователя нет необходимости знать,
как реализован тот или иной метод. Надо знать только то, что именно
метод выполняет, как к нему обратиться и как воспользоваться
результатом его работы. Например, определитель квадратной матрицы
51
                           Объектно-ориентированное программирование на С++
     Покажем на примере класса «Матрица действительных чисел»
(Matrix) использование принципа инкапсуляции. Этот класс содержит
переменные, доступ к которым может быть осуществлен только из
методов класса. Такой подход используется для того, чтобы защитить
переменные от несанкционированного доступа. Например, если дать
возможность программисту, который будет использовать класс Matrix,
изменять напрямую значения переменных для хранения размера матрицы,
то эти значения могут стать некорректными (отрицательными или очень
большими). А, выполняя то же самое с помощью методов класса, можно
включить в них проверку корректности введенных значений. Для нашего
класса таким методом может быть метод ввода матрицы. В примере
приведен фрагмент кода, в котором обрабатывается ввод некорректных
значений количества строк и столбцов матрицы.

     class Matrix
     {
          .    .    .
     public:

          void InputMatrix()
          {
               cout << "Введите количество строк матрицы"
                                                        << endl;
               cin >> m;
               if (m <= 0)
                    throw "Количество строк должно быть
                                        положительным" << endl;
               cout << "Введите количество столбцов матрицы"
                                                       << endl;
               cin >> n;
               if (n <= 0)
                    throw "Количество столбцов должно быть
                                             положительным ";
               .    .    .
          }
          .    .    .
     };

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