.需求:有一个电子销售系统需要打印顾客所购买的商品的发票(Invoice),一张发票可以分成三个部分:
发票头部(Header):上面有顾客的名字,销售的日期。
发票主部:销售的货物清单,包括商品的名字(Item)、购买的数量(Units)、单价(Unit Price)、小计(Sub Total);
发票的尾部(Footer):商品的总金额(Total);
下面是打印出的发票的大致的样子:
********************** INVOICE ************************************
XYZ Incorporated
Date of Sale: Sun May 26 21:42:36 EDT 2002
Item Units Unite Price Subtotal
Fire Wheel Tire 4 $154.3 $616.92
Front Fender 1 $300.45 $300.45
Total $917.37
如果客户需要中文发票,打印的格式大致如下:
********************** 发票 ************************************
XYZ 公司
购买时间: Sun May 26 21:42:36 EDT 2002
Item Units Unite Price Subtotal
Fire Wheel Tire 4 $154.3 $616.92
Front Fender 1 $300.45 $300.45
总计 $917.37
需要提醒的是:
发票的头部和尾部可以有很多种可能的格式,因此系统的设计必须给出足够的灵活性,使得一个新的头部和新的尾部格式能够比较容易地插入到系统中;
同时,本系统的客户端必须可以随意地选择某一个头部格式和某一个尾部格式的组合并与主部格式结合起来。
为了进行验证,本实验要求四种格式,中文的发票头和发票尾,英文的发票头和发票尾,中文的头和英文的发票尾组合,英文的发票头和中文的发票尾组合
要求:1)绘制出完整的类图(不用画客户端)
2)实现代码
类图设计如下: