Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Глава 23. Разложение классов   253




//        — Программа банковского

// с наследованием и полиморфизмом. Обратите

// внимание на то,              стала эта

// программа по сравнению с

// после того как из нее был удален

// дублированный код. Теперь одна функция

//                   и чековые и

//     (а также любые другие, которые вы можете

// придумать в будущем).

//

// Кроме того, вместо массива, который может иметь

// только определенную длину, эта версия хранит

//     в связанном

 

#include <stdlib.h>

 

<string.h>

 

ect

{

 

 

// добавим текущий объект к

// связанному списку

 

 

// управление связанным списком static

{

return

}

 

{

return

i

void      ;

 

// будем содержать счета в связанном списке,

// так что теперь не  ограничения на

// количество объектов

 

pNext;

 

// инициализируем указатель на

// объект в связанном списке

= 0;

 

// добавим текущий объект к связанному списку объектов void LinkedListObject::addToEnd()

 

// добавим объект  к концу списка

// и учтем его в счетчике count

 


Часть Наследо


(pFirst == 0)

{

// список пуст; сделаем этот объект первым pFirst = this;

}

else

{

найдем последний элемент списка

 

for = pFirst; pA->pNext; = pA->pNext) {}

,' / свяжем текущий объект с концом списка pA->pNext = this;

)

pNext =        // этот объект — последний

 

 

// Account — этот абстрактный класс объединяет в себе

//     свойства обоих типов     как чековых,

// так и                   отсутствует реализация

//             - функции снятия, которая различна

// для разных типов счетов Account :

{

 

accNo,

double initialBalance = 0.0)

{

// инициализируем          объекта

=

balance initialBalance;

// учтем этот объект

 

 

// функции доступа int

{

return

}

 

{

return balance;

}

с int

{

return count;

 

// функции связанного списка, обеспечивающие

//      работы с ним. Они

// помогут сберечь много времени в будущем static

{

return


Глава 23. Разложение классов             255


Account*

return

}

// функции транзакций

void            amount)

balance += amount;

virtual void               amount) = 0;

// функция вывода объекта void

<<

<< " счет номер " << accountNumber

<< " " << balance

« "\n";

virtual char*    = 0; protected:

static int count; // количество счетов

accountNumber;

 

 

// выделим место под статический член int = 0;

 

// Checking — этот класс содержит уникальные для данного

// класса       Много ли от него осталось?

:   Account


{

public:


 

 

sccNo,


 

= 0.0) :


 

 

//       чисто        функции

virtual void               amount); char*

f

return "Чековый";

 

 

//        — перегрузим функцию-член

//                      так, чтобы ока

// взимала центов за каждое снятие

// с чека с балансом меньше $500 void

{

if (balance < amount )

 






Часть IV. Наследование


<< "Недостаточно   на счете "баланс равен " << balance

<< ", попытка снять " << amount

<< "\п";

 

balance -= amount;

.'/ если баланс упал слишком низко,

.'/        гонорар за обслуживание

..1     < 500.00)

 

balance -= 0.20;

 

//    — то же самое, что и Checking, за

// исключением еще одного         члена Savings :             Account

{

 

 

double initialBalance}

{

= 0;

i

 

// функции транзакций

virtual void               amount); char'

{

return

 

 

protected: int

 

// withdrawal - перегрузим функцию-член

//                      так, чтобы она

// взимала гонорар за обслуживание Б

// змере $5 при первом снятии за месяц Sav        : :

{

if     < amount)

{

;out << "Недостаточно денег на "баланс равен " << balance

<< ", попытка снять " << amount

<< "\п";

}

 

 


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 192; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь