1  #ifndef INVOICE_H
  2  #define INVOICE_H
  3  
  4  #include <vector>
  5  
  6  using namespace std;
  7  
  8  #include "item.h"
  9  #include "invoiceprinter.h"
 10  #include "itemiterator.h"
 11  
 12  /**
 13     Describes an invoice that bills for a sequence of items.
 14  */
 15  class Invoice
 16  {
 17  public:
 18     /**
 19        Adds an item to this invoice.
 20        @param it the item that the customer ordered
 21     */
 22     void add(Item* it);
 23     /**
 24        Prints the invoice.
 25     */
 26     void print(InvoicePrinter& printer);
 27     /**
 28        Creates an iterator through the items of this invoice.
 29        @return the iterator
 30     */
 31     ItemIterator create_iterator();
 32  private:
 33     vector<Item*> items;
 34  };
 35  
 36  #endif