Программирование >>  Аргументация конструирования 

1 ... 78 79 80 [ 81 ] 82 83 84 ... 108


еттЗ.СРР - Программа банковского бюджета с наследованием и полиморфизмом. Обратите внимание на то о меньше стала эта программа по сравнению с 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. Наследование



1 ... 78 79 80 [ 81 ] 82 83 84 ... 108

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика