public abstract class AbstractPolynom implements Polynom { //Data protected int degree; //Abstract methods public abstract double coeff(int degree); public abstract double setCoeff(int degree,double value); protected abstract Polynom create(); public abstract java.util.Iterator<Integer> degrees(); //Polynom methods public int degree() { return this.degree; } public Polynom add(Polynom arg) { Polynom result = create(); java.util.Iterator<Integer> it = this.degrees(); while(it.hasNext()) { int degree = it.next(); result.setCoeff(degree,this.coeff(degree)); } it = arg.degrees(); while(it.hasNext()) { int degree = it.next(); result.setCoeff(degree,result.coeff(degree) + arg.coeff(degree)); } return result; } public Polynom mult(Polynom arg) { System.out.println("Not implemented!"); return null; } public double eval(double value) { System.out.println("Not implemented!"); return 0; } public Polynom derive() { System.out.println("Not implemented!"); return null; } public double[] toArray() { java.util.Iterator<Integer> it = this.degrees(); double[] result = new double[this.degree() + 1]; while(it.hasNext()) { int degree = it.next(); result[degree] = this.coeff(degree); } return result; } //Override methods - inherited from class Object public boolean equals(Object arg) { Polynom P = this; Polynom Q = (Polynom)arg; if(P.degree() != Q.degree()) return false; double[] PArray = P.toArray(); double[] QArray = Q.toArray(); //Proverka dali masivite PArray i QArray savpadat //... } public String toString() { String result = "Polynom degree: " + this.degree + '\n'; java.util.Iterator<Integer> it = this.degrees(); while(it.hasNext()) { int degree = it.next(); double coeff = this.coeff(degree); result = result + "Coefficient: " + coeff + " Degree: " + degree +'\n'; } return result; } }