1.(Account继承层次)创建一个银行账户的继承层次,表示银行的所有客户账户。所有的客户都能在他们的银行账户存钱,取钱,但是账户也可以分成更具体的类型。例如,一方面存款账户SavingAccount依靠存款生利,另一方面,支票账户CheckingAccount对每笔交易(即存款或取款)收取费用。
创建一个类层次,以Account作为基类, SavingAccount和CheckingAccount作为派生类。基类Account应该包括一个double类型的数据成员balance,表示账户的余额。该类应提供一个构造函数,接受一个初始余额值并用它初始化数据成员balance。而且构造函数确认初始余额的有效性,保证它大于等于0。如果小于0,则需将其置为0,并显示出错信息,表明该初始化余额是一个无效的值。该类应当提供三个成员函数。成员函数credit可以向当前余额加钱;成员函数debit负责从账户中取钱,并且保证账户不会被透支。如果提取金额大于账户金额,函数将保持balance不变,并打印信息“Debit amount exceeded account balance”;成员函数getBalance则返回当前balance的值
2.派生类SavingAccount不仅继承了基类Account的功能,而且还应提供一个附加的double类型数据成员interestrate表示这个账户的比率(百分比)。 SavingAccount的构造函数应接受初始余额值和初始利率值,还应提供一个public成员函数caclculateInterest,返回代表账户的利息的一个double值,这个值是balance和interestrate的乘积。注意:类SavingAccount应继承成员函数credit和debit,不需要重新定义。
3.派生类CheckingAccount不仅继承了基类Account的功能,还应提供一个附加的double类型数据成员表示每笔交易的费用。 CheckingAccount的构造函数应接受初始余额值和交易费用值。类CheckingAccount需要重新定义成员函数credit和debit,当每笔交易完成时,从balance中减去每笔交易的费用。重新定义这些函数时应用(即调用)基类Account的这两个函数来执行账户余额的更新。 CheckingAccount的debit函数只有当钱被成功提取时(即提取金额不超过账户余额时)才应收取交易费。提示:定义Account的debit函数使它返回一个bool类型值,表示钱是否被成功提取。然后利用该值决定是否需要扣除交易费。
当这个层次中的类定义完毕后,编写一个程序,要求创建每个类的对象并测试他们的成员函数。将利息加到SavingAccount对象的方法是:先调用它的成员函数caclculateInterest,然后将返回的利息数传递给该对象的credit值。