Класс для хранения матриц

Задача

Напишите класс для хранения матриц и реализуйте основные операции работы с ними.

Тесты

Операция Входная матрица А Входная   матрица В Результат
 1 Транспони-рования 33 34 12
33 19 10
12 14 17
84 24 51
43 71 21
33 33 12 84 43
34 19 14 24 71
12 10 17 51 21
 2 Сложения -1   1   -1
1   -1   1
-1   1   -1
1   -1   1
-1    1  -1
1   -1   1
0   0   0
0   0   0
0   0   0
 3 Вычитания -1   1   -1
1   -1   1
-1   1   -1
1   -1   1
-1    1  -1
1   -1   1
-2   2   -2
2   -2   2
-2   2   -2
 4 Умножения 33  34  12
33  19  10
12  14  17
84  24  51
43  71  21
10  11  34  55
33  45  17  81
45  63  12  16
1992 2649 1844 4761
1407 1848 1565 3514
1347  1833 850 2066
3927 5217 3876 7380
3718 4991 2921 8452

Решение

Проверить работу кода можно в облаке по ссылке — Ideone.

Пояснения

Класс  Matrix  имеет следующие поля:  n, m  — размеры основной матрицы, и сама матрица  mainMatrix , представлена в виде двумерного массива целочисленного типа. Также данный класс имеет два конструктора: первый из которых принимает как параметры размеры создаваемой матрицы public Matrix(int n, int m) , второй же принимает как параметр двумерный массив(матрицу)  public Matrix(int [][] paramMatrix) .

Данный класс имеет следующие методы:

  1. public int getElement(int n, int m)  — метод для получения элемента матрицы по индексам;
  2. public void setElement(int n, int m, int value)  — метод задания элемента по индексам;
  3. public int getVerticalLength() — метод получения количества строк в матрице;
  4. public int getHorizontalLength()  — метод получения количества столбцов в матрице;
  5. public void fillRandomValues()  — метод заполнения матрицы рандомными значениями;
  6. public void displayMatrix()  — метод вывода матрицы;
  7. public static int[][] transpone(int[][] paramMatrix)  — метод транспонирования матрицы, с двумерным массивом как параметр;
  8. public static Matrix transpone(Matrix paramMatrix)  — метод транспонирования матрицы, с объектом класса  Matrix , как параметр;
  9. public static Matrix add(Matrix first, Matrix second)  — метод нахождения суммы двух матриц;
  10. public static Matrix subtract (Matrix first, Matrix second)  — метод вычитания одной матрицы из другой;
  11. public static Matrix multiply (Matrix first, Matrix second)  — метод произведения двух матриц.

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