Глава 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 —