Выбрать главу

                pAccount -> deposit( transaction ) ;

            }

            // Снятие

            if ( transaction < 0 )

            {

                pAccount -> withdrawal( -transaction ) ;

            }

        } while ( transaction != 0 ) ;

    }

_________________

372 стр. Часть 6. Великолепная десятка

Первые строки перед определением класса Account инстанцируют шаблоны классов LinkedList и Node в классы LinkedList< Node > и Node< Account > соответственно. Эти строки создают классы, необходимые для объединения объектов Account в связанный список.

Другая программа может с тем же успехом создать класс LinkedList< Student >, LinkedList< Name >, или другой придуманный вами класс.

Класс Account работает так же, как и в предыдущей программе BUDGET3.    

Подведение итогов...373

Программа BUDGET3 использует объектно-ориентированные технологии для реализации набора классов счетов, а также включает реализацию связанного списка, который позволяет хранить неограниченное количество счетов. Единственная проблема заключается в том, что класс AccountLinkedList оказывается привязан к классу Account.

В программе BUDGET4 определён шаблон класса LinkedList< class Т >, который может работать с объектами любого типа. В этой версии единственной проблемой ( если это можно считать проблемой ) является то, что нам надо самим реализовывать связанный список.

Связанные списки используются уже очень давно, так что мы изобретаем велосипед. И хотя с методической точки зрения это совсем неплохо, в STL имеется соответствующий шаблон класса, который можно использовать в качестве контейнера ( в STL имеется масса различных контейнеров ). В следующей версии программы BUDGET мы используем этот предопределённый шаблон для хранения объектов Account.         

►BUDGET5...373

Программа BUDGET5 — последняя в длинном ряду программ этой главы, призванных решать одну и ту же простую задачу имитации банковских счетов. В программе BUDGET3 эти счета представлены в виде трёх классов — Account, Savings и Checking, для хранения которых используется связанный список. Из жёстко кодированного списка для хранения объектов типа Account в программе BUDGET4 он становится шаблоном класса LinkedList< class Т >.

Программа BUDGET5 идёт на один шаг дальше и использует шаблон класса из STL.

«Для того чтобы понять эту программу, вы должны ознакомиться с главой 28, "Стандартная библиотека шаблонов"

[Помни!]

Использование шаблона класса из STL...373 

Стандартная библиотека шаблонов определяет множество различных типов контейнеров, которые можно использовать для хранения групп объектов. В следующей версии программы BUDGET используется шаблон класса list.

    /* BUDGET5.CPP — идентична другим программам */

    /*              Budget за исключением использования */

    /*              шаблона класса из STL */

    #include <cstdio>

    #include <cstdlib>

    #include <iostream>

    #include <list>  

_________________

373 стр. Глава 31. Программа BUDGET 

    using namespace std ;

    /* Account — абстрактный класс, включающий */

    /*            общие свойства различных счетов */

    class Account

    {

      public :

        Account::Account( unsigned accNo )

        {

            /* Инициализация данных-членов */

            accountNumber = accNo ;

            balance = 0 ;

            count++ ;

        }

        /* Функции доступа */

        int accountNo( ) { return accountNumber ; }

        double acntBalance( ) { return balance ; }

        static int noAccounts( ) { return count ; }

        /* Функции транзакций */