|
Программирование >> Аргументация конструирования
еттЗ.СРР - Программа банковского бюджета с наследованием и полиморфизмом. Обратите внимание на то о меньше стала эта программа по сравнению с Buclget2, / / после того как из нее был удален дублированный код. Теперв одна функция и чековые и счета (а также любые другие, которые вы можете придумать в будущем). Кроме того, вместо массива, который может иметь только определенную длину, эта версия хранит в связанном Iinciude <iostreain. h> #include <stdlib.h> tinclude <ctype,h> Iinciude <string.h> public: LinkedLlstObj ect() f добавим текущий объект к связанному списку addToEnd () ; управление связанным списком static LinkedListObnect* first О return LinkedListObject* next () return pNext; void addToEnd0 ; protected г будем содержать счета в связанном списке, так что теперь не ограничения на количество объектов Static LinkedLlstObj ect* pFirst; LinkedListObject* pNext; инициализируем указатель на первый объект в связанном списке LinkedListObject* LinkedListObject::pFirst = 0; добавим текущий объект к связанному списку объектов void LinkedListObject::addToEnd() { добавим объект к концу списка и учтем его в счетчике count if (pFirst == 0) { список пуст; сделаем этот объект первым pFirst = this; else найдем последний элемент списка LinkedListObject* рА; fo (рА = pFirst; pA->pNext рА = pA->pNext) {} , / свяжем текущий объект с концом списка pA->pNext = this; pNext =0; этот объект - последний Account - этот абстрактный класс объединяет в себе ойиие свойства обоих типов счетов: как чековых, так льных. Здесь отсутствует реализация №drawal () - функции снятия, которая различна для разных типов счетов class Account : public LinkedListObject { public : Account::Account(unsigned accNo, double initialBalance = 0.0) инициализируем объекта accountNumber = accNo; balance = initialBalance; учтем этот объект count++; функции доступа int accountNoO return accountNumber; double acntBalance() return balance; с int return count; функции связанного списка, обеспечивающие даер;*:ку работы с ним. Они помогут сберечь много времени в будущем static Accounf first () return Account* next О i return функции транзакций void amount) ] balance += amount; virtual voi al (double amount) = 0; функция вывода объекта fold display 0 << << счет номер << accountNumber = balance \n ; virtual char* = 0; protected: static int count; количество счетов unsigned accountNumber; double balance; выделим место под статический член int Account::count = 0; Checking - этот класс содержит уникальные для данного класса свойства. Много ли от него осталосв? class Checking : public Account { public: Checking::Checking(unsigned sccNo, double initialBalance =0.0) : Account(accNo, initialBalance) { } чисто функции virtual void withdrawal(double amount); char* typeO return Чековый ; II withdrawal - перегрузим функцию-член Account::withdrawal О так, чтобы ока взимала центов за каждое снятие с чека с балансом меньше $500 void Checking::withdrawal(double amount) { if (balance < amount ) 256 Часть IV. Наследование
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |