一些快递商,都提供多样化的服务,同时也收取不同的费用。创建一个表示各种不同包裹的继承层次:以包裹类Package作为父类,两日包裹类TwoDayPkg和连夜包裹类ANightPkg作为子类。父类Package应该包含代表寄件人和收件人姓名、地址、所在城市和邮政编码等的数据成员。此外,还应包括存储包裹重量(以千克计)和每千克费用的数据成员。类的构造函数应初始化这些数据成员,确保重量和每千克费用非负。如果重量小于1千克则以1千克计。
※Package应该提供Public成员函数calcCost,该函数计算重量和每千克费用的乘积,计算出寄送包裹的费用并返回(返回值类型为double)。
※子类TwoDayPkg构造函数应继承父类Package的功能,但还应包含一个数据成员,表示付给两日快递服务的平寄费。TwoDayPkg构造函数应接受一个值来初始化这个数据成员。类TwoDayPkg还应该重新定义父类的成员函数calcCost来计算运输费用,具体方法是将平寄费加到由父类Package的calcCost函数计算得到的基于重量的费用中。
※子类ANightPkg应直接继承父类,并且应包含一个附加的数据成员,表示传给连夜快递服务的每千克的额外费用。类ANightPkg应当重新定义父类的成员函数calcCost,从而使它在计算运输费用之前,先将额外的每千克费用加到标准的每千克费用上。
编写测试程序,创建每种Package的对象并测试成员函数calcCost。
这不是设计模式里面的 工厂模式? 特别适合 你要不试试?