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

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
обращение к ним из других классов невозможно. Для решения этой
проблемы имеется два подхода: включение специальных методов доступа
к данным в классы MatrixElement и ListElement или объявление
класса MatrixList дружественным этим классам. Будем использовать в
нашей программе дружественные классы. Для этого в классы
MatrixElement и ListElement добавляется строка:
friend class MatrixList;
Поскольку имя класса MatrixList мы используем до его
объявления, требуется заранее указать о существовании такого класса в
программе. Для этого делается предварительное объявление класса
MatrixList.
Для класса элемента матрицы (MatrixElement) требуется
определить только конструктор, инициализирующий индексы элемента
матрицы и его значение:
MatrixElement::MatrixElement(int i1, int j1, double val)
{
i = i1;
j = j1;
value = val;
}
Класс элемента списка (ListElement) тоже должен содержать
конструктор, который вызывает конструктор внедренного объекта класса
MatrixElement:
ListElement::ListElement(int i, int j, double v)
: a(i,j,v)
{
next = NULL;
}
Далее приводятся определения конструкторов, деструктора,
оператора присваивания и функции уничтожения разреженной матрицы.
В этих методах матрица рассматривается как список элементов, поэтому
их реализация аналогична реализации этих методов для работы с
обычным списком.
// конструктор матрицы из нулевых элементов
// заданных размеров
170
                                 Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
обращение к ним из других классов невозможно. Для решения этой
проблемы имеется два подхода: включение специальных методов доступа
к данным в классы MatrixElement и ListElement или объявление
класса MatrixList дружественным этим классам. Будем использовать в
нашей программе дружественные классы. Для этого в классы
MatrixElement и ListElement добавляется строка:

      friend class MatrixList;


     Поскольку имя класса MatrixList мы используем до его
объявления, требуется заранее указать о существовании такого класса в
программе. Для этого делается предварительное объявление класса
MatrixList.
     Для класса элемента матрицы (MatrixElement) требуется
определить только конструктор, инициализирующий индексы элемента
матрицы и его значение:

      MatrixElement::MatrixElement(int i1, int j1, double val)
      {
           i = i1;
           j = j1;
           value = val;
      }

     Класс элемента списка (ListElement) тоже должен содержать
конструктор, который вызывает конструктор внедренного объекта класса
MatrixElement:

      ListElement::ListElement(int i, int j, double v)
                                                  : a(i,j,v)
      {
           next = NULL;
      }

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

170