public class OrdinaryMatrix extends Matrix { //Data-elements private double[][] elements; //Constructors public OrdinaryMatrix(int rows,int cols) { n=rows; m=cols; elements=new double[n][m]; } public OrdinaryMatrix(double[][] data) { this(data.length,data[0].length); for (int i = 0; i < data.length; i++) for (int j = 0; j < data[0].length; j++) elements[i][j]=data[i][j]; } public OrdinaryMatrix(Matrix arg) { this(arg.getRows(),arg.getColumns()); for (int i = 1; i <= arg.getRows(); i++) for (int j = 1; j <= arg.getColumns(); j++) elements[i-1][j-1]=arg.elementAt(i,j); } //Protected method f - inherited from Matrix //Implementation of abstract methods public double elementAt(int i,int j) { f(i,j); return elements[i-1][j-1]; } public double setElementAt(int i,int j,double value) { f(i,j); double oldValue=elements[i-1][j-1]; elements[i-1][j-1]=value; return oldValue; } protected Matrix create(int rows,int cols) { return new OrdinaryMatrix(rows,cols); } //Public methods - inherited from Matrix }