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

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// операция вычитания матриц
Matrix operator-(Matrix&);
// операция умножения двух матриц
Matrix operator*(Matrix&);
// операция умножения матрицы на число
Matrix operator*(double);
// операция присваивания
Matrix& operator=(Matrix&);
// операция получения строки матрицы с заданным номером
double* operator[](int);
// операция транспонирования матрицы
Matrix operator!();
// дружественная функция операции умножения
// числа на матрицу
friend Matrix operator*(double, Matrix&);
// дружественная функция операции вывода матрицы
friend ostream& operator<<(ostream&, const Matrix&);
// дружественная функция операции ввода матрицы
friend istream& operator>>(istream&, Matrix&);
};
Объект класса Matrix определяется размерами матрицы и
двумерным массивом ее элементов. Поведенческие свойства класса
определяются операциями матричного исчисления.
Так как квадратная матрица есть частный случай прямоугольной,
структурные и поведенческие свойства класса «Квадратная матрица»
(QMatrix) будут идентичны свойствам класса Matrix. Поэтому
реализуем класс «Квадратная матрица» как наследник класса Matrix,
добавив в него методы, специфичные для квадратной матрицы
(вычисление определителя и получение обратной матрицы). Для
обеспечения доступа к переменным базового класса из производного их
объявление помещено в секцию protected класса Matrix.
Создание объекта класса Matrix требует выделения памяти для
хранения ее элементов. Поэтому класс Matrix должен обязательно
содержать конструктор копирования, оператор присваивания и
деструктор. Кроме того, можно дополнительно определить конструктор
по умолчанию и конструктор с параметрами, определяющими размеры
матрицы.
// конструктор по умолчанию
Matrix::Matrix()
{
n = 0;
136
                               Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
           // операция вычитания матриц
           Matrix operator-(Matrix&);
            // операция умножения двух матриц
           Matrix operator*(Matrix&);
           // операция умножения матрицы на число
           Matrix operator*(double);
           // операция присваивания
           Matrix& operator=(Matrix&);
           // операция получения строки матрицы с заданным номером
           double* operator[](int);
           // операция транспонирования матрицы
           Matrix operator!();
           // дружественная функция операции умножения
           // числа на матрицу
           friend Matrix operator*(double, Matrix&);
           // дружественная функция операции вывода матрицы
           friend ostream& operator<<(ostream&, const Matrix&);
           // дружественная функция операции ввода матрицы
           friend istream& operator>>(istream&, Matrix&);
      };

    Объект класса Matrix определяется размерами матрицы и
двумерным массивом ее элементов. Поведенческие свойства класса
определяются операциями матричного исчисления.
    Так как квадратная матрица есть частный случай прямоугольной,
структурные и поведенческие свойства класса «Квадратная матрица»
(QMatrix) будут идентичны свойствам класса Matrix. Поэтому
реализуем класс «Квадратная матрица» как наследник класса Matrix,
добавив в него методы, специфичные для квадратной матрицы
(вычисление определителя и получение обратной матрицы). Для
обеспечения доступа к переменным базового класса из производного их
объявление помещено в секцию protected класса Matrix.
    Создание объекта класса Matrix требует выделения памяти для
хранения ее элементов. Поэтому класс Matrix должен обязательно
содержать конструктор копирования, оператор присваивания и
деструктор. Кроме того, можно дополнительно определить конструктор
по умолчанию и конструктор с параметрами, определяющими размеры
матрицы.


      // конструктор по умолчанию
      Matrix::Matrix()
      {
           n = 0;

136