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.

For a more complete specification, refer to: CSU 670 Fall 2006 Project Description.