class InvoicePrinter
{
public:
virtual void print_header(string s) = 0;
virtual void print_string(string value, bool pad_right) = 0;
virtual void print_number(double value, int precision) = 0;
virtual void print_footer(string s, double total) = 0;
};