Глава 3. Объектно-ориентированные анализ и проектирование_____________67
У всех банковских счетов есть баланс, все они обеспечивают некоторые средства для вклада денег на счет и снятия с него. Поэтому имеет смысл начать не прямо с класса savingsAccount, а с класса BankAccount:
class BankAccount ( public:
BankAccount(Balance initialBalance) ;
virtual -BankAccount(void) ;
void deposit(Amount depositAmount);
void withdraw(Amount withdrawalAmount);
Balance currentBalance(void);
private:
TransactionRegister transactions;
); •
Известно, что сберегательный счет, как правило, характеризуется процентом дохода, в отличие от чекового. В свою очередь, у чекового с*чета есть минимальная сумма баланса, в отличие от сберегательного. В этих предположениях класс savingsAccount можно определить как
class SavingsAccount : public BankAccount ( public:
SavingsAccount(Balance initialBalance);
virtual -SavingsAccount(void);
void setInterestRate(Rate interestRate);
Rate currentInterestRate(void);
private:
Rate currentInterestRate;
};
a CheckingAccount так:
class CheckingAccount: public BankAccount {
CheckingAccount(Balance initialBalance) ;
virtual -CheckingAccount(void);
void setMinimumBalance(Balance minimumBalance);
Balance minimumBalance (void) ;
private:
Balance minimumBalance; ' };
Заметьте, что при том, что эти классы имеют собственные свойства, оба они являются потомками класса BankAccount. В случае savingsAccount к определению класса была добавлена процентная ставка, а для CheckingAccount —