// Fig. 11.15: PayableInterfaceTest.cs // Tests interface IPayable with disparate classes. using System; public class PayableInterfaceTest { public static void Main( string[] args ) { // create four-element IPayable array IPayable[] payableObjects = new IPayable[ 4 ]; // populate array with objects that implement IPayable payableObjects[ 0 ] = new Invoice( "01234", "seat", 2, 375.00M ); payableObjects[ 1 ] = new Invoice( "56789", "tire", 4, 79.95M ); payableObjects[ 2 ] = new SalariedEmployee( "John", "Smith", "111-11-1111", 800.00M ); payableObjects[ 3 ] = new SalariedEmployee( "Lisa", "Barnes", "888-88-8888", 1200.00M ); Console.WriteLine( "Invoices and Employees processed polymorphically:\n" ); // generically process each element in array payableObjects foreach ( IPayable currentPayable in payableObjects ) { // output currentPayable and its appropriate payment amount Console.WriteLine( "{0} \n{1}: {2:C}\n", currentPayable, "payment due", currentPayable.GetPaymentAmount() ); } // end foreach } // end Main } // end class PayableInterfaceTest /************************************************************************** * (C) Copyright 1992-2006 by Deitel & Associates, Inc. and * * Pearson Education, Inc. All Rights Reserved. * * * * DISCLAIMER: The authors and publisher of this book have used their * * best efforts in preparing the book. These efforts include the * * development, research, and testing of the theories and programs * * to determine their effectiveness. The authors and publisher make * * no warranty of any kind, expressed or implied, with regard to these * * programs or to the documentation contained in these books. The authors * * and publisher shall not be liable in any event for incidental or * * consequential damages in connection with, or arising out of, the * * furnishing, performance, or use of these programs. * *************************************************************************/