Читаем С++ для "чайников" . полностью

        Node< T >* pFirst ;

    } ;

    #endif 

_________________

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

«Дальнейшее рассмотрение может оказаться проще, если вы мысленно замените обобщённый класс Т действительным классом Account. При этом вы увидите, насколько программа становится похожей на свою предшественницу — программу BUDGET3

[Советы]

Выражение template < class Т > class LinkedList представляет собой предварительное объявление шаблона, необходимое для класса Node.

«Не забывайте о том, что шаблоны классов LinkedList и Node не являются реальными классами до тех пор, пока параметр Т не будет заменён действительным классом.» 

[Помни!]

Шаблон класса Node сконструирован для работы в качестве узла связанного списка. Каждый узел указывает на объект класса Т, который будет определён позже. Конструктор инициализирует члены-указатели: pList указывает на LinkedList, членом которого является данный объект Node, pObject указывает на объект типа Т, a pNext инициализируется значением 0 , указывающим, что пока узел не является членом списка.

"Активный метод" next ( Node< T >* ) добавляет текущий узел в список путём инициализации указателя pNext. "Пассивный метод" next( ) просто возвращает следующий объект Node< T > в списке. Это обычная практика кодирования, когда функция fn( ) возвращает текущее значение объекта, a fn( Т ) устанавливает его значение на основе аргумента.

Эта версия addNode( ) более усовершенствована по сравнению с представленной в программе BUDGET3, поскольку добавляет узел в конец списка. Преимущество такого подхода в том, что объекты считываются из списка в том же порядке, в котором были в него внесены, а недостаток в том, что метод lastNode( ) должен выполнять проход по всему списку всякий раз, когда требуется внести в список новый объект. Это может существенно замедлить работу программы при большом количестве элементов в списке.

<p><strong><emphasis>Исходный код BUDGET4...368</emphasis></strong></p>

Исходный код программы BUDGET4 практически идентичен коду BUDGET3.

    /* BUDGET4.CPP — в этой версии используется */

    /*                 шаблон класса LinkedList */

    //

    #include

    #include

    #include

    using namespace std ;

    #include "LinkedList.h"

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

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

    class Account ;

    template class LinkedList< Account > ;

    template class Node< Account > ;

    class Account

    {

      public :

        Account::Account( LinkedList< Account >* pList ,

                              unsigned accNo )

        {

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

_________________

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

            accountNumber = accNo ;

            balance = 0 ;

            /* Внесение в список */

            pNode = new Node< Account >( pList , this ) ;

            pList -> addNode( pNode ) ;

            count++ ;

        }

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

        int accountNo( ) { return accountNumber ; }

        double acntBalance( ) { return balance ; }

        static int noAccounts( ) { return count ; }

        static Account* first( LinkedList< Account >* pLinkedList )

        {

            Node< Account >* pNode = pLinkedList -> firstNode( ) ;

            return pNode -> current( ) ;

        }

        Account* next( )

        {

            Node< Account >* pNextNode = pNode -> next( ) ;

            return pNextNode -> current( ) ;

        }

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

        void deposit( double amount ) { balance += amount ; }

        virtual bool withdrawal( double amount )

        {

            if ( balance < amount )

            {

                cout << "Недостаточно денег: на счету " << balance

                      << ", снимаем " << amount

                      << endl ;

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных