Modify the Invoice class of Chapter 12 so that it implements the Iterable<LineItem> interface. Then demonstrate how an Invoice object can be used in a “for each” loop.

Complete the following file:

Invoice.java

Use the following file:

InvoicePrinter.java

/**
   This program tests the invoice classes by printing
   a sample invoice.
*/
public class InvoicePrinter
{  
   public static void main(String[] args)
   {  
      Address samsAddress 
            = new Address("Sam's Small Appliances",
               "100 Main Street", "Anytown", "CA", "98765");

      Invoice samsInvoice = new Invoice(samsAddress);
      samsInvoice.add(new Product("Toaster", 29.95), 3);
      samsInvoice.add(new Product("Hair dryer", 24.95), 1);
      samsInvoice.add(new Product("Car vacuum", 19.99), 2);

      for (LineItem item : samsInvoice)
         System.out.println(item.format());
   }
}