Реализация библиотеки s21_matrix_oop.h
В данном проекте реализована библиотека для работы с матрицами, но на этот раз используя объектно-ориентированный подход. Объектно-ориентированный подход позволяет реализовать библиотеку для работы с матрицами в виде отдельного класса, над объектами которого определены операции, представленные как методами, так и стандартными операторами +, -, * и т.д.
Ниже представлено краткое описание операций над матрицами, которые необходимо реализовать в разрабатываемой библиотеке.
| Операция | Описание | Исключительные ситуации |
|---|---|---|
bool EqMatrix(const Matrix& other) |
Проверяет матрицы на равенство между собой. | |
void SumMatrix(const Matrix& other) |
Прибавляет вторую матрицы к текущей | различная размерность матриц. |
void SubMatrix(const Matrix& other) |
Вычитает из текущей матрицы другую | различная размерность матриц. |
void MulNumber(const double num) |
Умножает текущую матрицу на число. | |
void MulMatrix(const Matrix& other) |
Умножает текущую матрицу на вторую. | число столбцов первой матрицы не равно числу строк второй матрицы. |
Matrix Transpose() |
Создает новую транспонированную матрицу из текущей и возвращает ее. | |
Matrix CalcComplements() |
Вычисляет матрицу алгебраических дополнений текущей матрицы и возвращает ее. | Матрица не является квадратной. |
double Determinant() |
Вычисляет и возвращает определитель текущей матрицы. | Матрица не является квадратной. |
Matrix InverseMatrix() |
Вычисляет и возвращает обратную матрицу. | Определитель матрицы равен 0. |
Также реализованы конструкторы и деструкторы:
| Метод | Описание |
|---|---|
Matrix() |
Базовый конструктор, инициализирующий матрицу некоторой заранее заданной размерностью. |
Matrix(int rows, int cols) |
Параметризированный конструктор с количеством строк и столбцов. |
Matrix(const Matrix& other) |
Конструктор копирования. |
Matrix(Matrix&& other) |
Конструктор переноса. |
~Matrix() |
Деструктор. |
Также перегружены следующие операторы, частично соответствующие операциям выше:
| Оператор | Описание | Исключительные ситуации |
|---|---|---|
+ |
Сложение двух матриц. | Различная размерность матриц. |
- |
Вычитание одной матрицы из другой. | Различная размерность матриц. |
* |
Умножение матриц и умножение матрицы на число. | Число столбцов первой матрицы не равно числу строк второй матрицы. |
== |
Проверка на равенство матриц (EqMatrix). |
|
= |
Присвоение матрице значений другой матрицы. | |
+= |
Присвоение сложения (SumMatrix). |
Различная размерность матриц. |
-= |
Присвоение разности (SubMatrix). |
Различная размерность матриц. |
*= |
Присвоение умножения (MulMatrix/MulNumber). |
Число столбцов первой матрицы не равно числу строк второй матрицы. |
(int i, int j) |
Индексация по элементам матрицы (строка, колонка). | Индекс за пределами матрицы. |