// stepping stone for final interface import java.util.*; // We follow the rule that all interfaces terminate in I. interface InputInitialI { Set getPairs (); // returns Set(PairI) // only pairs where fraction is positive are included } interface PairI { int getRelationNumber(); double getFraction(); } interface OutputI { double getMaxBias(); Vector getPolynomial(); // returns Vector(double); 4 doubles // left most: highest degree (3) // right most: degree 0: constant of polynomial } interface InputUpdateI{ Vector getPolynomialBefore(); Set getAddedPairs(); // returns Set(PairI) Set getSubtractedPairs(); // returns Set(PairI) // only pairs where fraction is positive are included } // Sample use of interface: // The home team sends an object ii satisfying interface InputInitialI // to the outsourcing team. The outsourcing team does not know the // internal representation of the object (it could use DemeterJ // datastructures) but they know that getPairs returns a set of objects // satisfying interface PairI. // The outsourcing team sends back an object satisfying interface // OutputI. Again the home team does not know the internal representation // the outsourcing team uses but they know that there is a method // getMaxBias() to get back the maximum bias. Etc. // For the update case, we use interface InputUpdateI for input to the // outsourcing team and again OutputI for output from the outsourcing team.