Реализация библиотеки my_matrix_oop.h
В данном проекте реализована библиотека для работы с матрицами, используя объектно-ориентированный подход. Объектно-ориентированный подход позволяет реализовать библиотеку для работы с матрицами в виде отдельного класса, над объектами которого определены операции, представленные как методами, так и стандартными операторами +, -, * и т.д.
Ниже представлено краткое описание операций над матрицами, которые реализованы в библиотеке. Некоторые операции имеют исключительные ситуации, обрабатываемые с использованием механизма исключений.
Операция | Описание | Исключительные ситуации |
---|---|---|
bool EqMatrix(const MyMatrix& other) |
Проверяет матрицы на равенство между собой | |
void SumMatrix(const MyMatrix& other) |
Прибавляет вторую матрицы к текущей | различная размерность матриц |
void SubMatrix(const MyMatrix& other) |
Вычитает из текущей матрицы другую | различная размерность матриц |
void MulNumber(const double num) |
Умножает текущую матрицу на число | |
void MulMatrix(const MyMatrix& other) |
Умножает текущую матрицу на вторую | число столбцов первой матрицы не равно числу строк второй матрицы |
MyMatrix Transpose() |
Создает новую транспонированную матрицу из текущей и возвращает ее | |
MyMatrix CalcComplements() |
Вычисляет матрицу алгебраических дополнений текущей матрицы и возвращает ее | матрица не является квадратной |
double Determinant() |
Вычисляет и возвращает определитель текущей матрицы | матрица не является квадратной |
MyMatrix InverseMatrix() |
Вычисляет и возвращает обратную матрицу | определитель матрицы равен 0 |
Помимо данных операций, реализованы конструкторы и деструкторы:
Метод | Описание |
---|---|
MyMatrix() |
Базовый конструктор, инициализирующий матрицу некоторой заранее заданной размерностью |
MyMatrix(int rows, int cols) |
Параметризированный конструктор с количеством строк и столбцов |
MyMatrix(const MyMatrix& other) |
Конструктор копирования |
MyMatrix(MyMatrix&& other) |
Конструктор переноса |
~MyMatrix() |
Деструктор |
А также перегружены следующие операторы, частично соответствующие операциям выше:
Оператор | Описание | Исключительные ситуации |
---|---|---|
+ |
Сложение двух матриц | различная размерность матриц |
- |
Вычитание одной матрицы из другой | различная размерность матриц |
* |
Умножение матриц и умножение матрицы на число | число столбцов первой матрицы не равно числу строк второй матрицы |
== |
Проверка на равенство матриц (EqMatrix ) |
|
= |
Присвоение матрице значений другой матрицы | |
+= |
Присвоение сложения (SumMatrix ) |
различная размерность матриц |
-= |
Присвоение разности (SubMatrix ) |
различная размерность матриц |
*= |
Присвоение умножения (MulMatrix /MulNumber ) |
число столбцов первой матрицы не равно числу строк второй матрицы |
(int i, int j) |
Индексация по элементам матрицы (строка, колонка) | индекс за пределами матрицы |
- Программа разработана на языке C++ стандарта C++17 с использованием компилятора gcc
- Код соответствует Google Style
- Матрица реализована в виде класса
MyMatrix
- Хранятся только приватные поля
matrix_
,rows_
иcols_
- Реализован доступ к приватным полям
rows_
иcols_
через accessor и mutator. При увеличении размера - матрица дополняется нулевыми элементами, при уменьшении - лишнее просто отбрасывается - Решение оформлено как статическая библиотека (с заголовочным файлом my_matrix_oop.h)
- Подготовлено полное покрытие unit-тестами функций библиотеки c помощью библиотеки GTest
- Предусмотрен Makefile для сборки библиотеки и тестов (с целями all, clean, test, my_matrix_oop.a, gcov_report)