public abstract class GenericMatrix {
private Object[][] matrix;// constructor
public GenericMatrix(Object[][] matrix);// suma de matrices, se devuelve una nueva matriz
public Object[][] addMatrix(Object[][] matrix);// producto de matrices, se devuelve una nueva matriz
public Object[][] multiplyMatrix(Object[][] matrix);public abstract Object add(Object o1, Object o2);
public abstract Object multiply(Object o1, Object o2);
public abstract Object zero();
public static void displayMatrix(Object[][] m);
}
Puesto que no se especifica el tipo de los elementos de las matrices el programa no puede saber como sumar o multiplicar dos elementos de las matrices. Tampoco sabe cual es el elemento neutro (con valor cero) de sus tipos (por ejemplo, 0 para el tipo int o 0/1 para los de tipo Rational). Por lo tanto es necesario definir métodos abstractos: add(), multiply() y zero(). Estos métodos deben ser implementados en las subclases en las que se especifica el tipo de los elementos de la matriz.Los elementos de la matriz genérica serán instancias de la clase Object. Esto proporciona al usuario la posibilidad de utilizar cualquier tipo de datos para los elementos de las matrices en las subclases.
Se han de definir e implementar dos métodos concretos en la clase genérica: addMatrix() y multiplyMatrix() . Estos métodos estarán listos para usarse en cuanto los métodos add(), multiply() y zero() sean implementados. Estos métodos han de comprobar las dimensiones de las matrices antes de realizar las operaciones. Si dos matrices tienen dimensiones incompatibles el programa debería terminar. A continuación se muestra un ejemplo en el caso de que el tipo de las matrices sea entero:
Finalmente se propone implementar un método displayMatrix() para mostrar los elementos de la matriz por pantalla. Para ello utilizar el método toString().
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3+ 0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6= 0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6y 0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3* 0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6= 0 0 0 0
6 10 14 18
12 20 28 36
18 30 42 54