Введите положительное число для вклада,
отрицательное для снятия, 0 для завершения
: 200
: -10
: -10
: 0
Введите S для сберегательных счетов,
С для чековых, X для выхода: С
Введите номер счёта: 345
Введите положительное число для вклада,
отрицательное для снятия, 0 для завершения
: 200
: -20
: 0
Введите S для сберегательных счетов,
С для чековых, X для выхода: С
Введите номер счёта: 456
Введите положительное число для вклада,
отрицательное для снятия, 0 для завершения
: 600
: -20
: 0
Введите S для сберегательных счетов,
С для чековых, X для выхода: Х
Чековые счета:
Счёт 345 = 179.8
Счёт 456 = 580
Сберегательные счета:
Счёт 123 = 180 ( номер снятия = 1 )
Счёт 234 = 175 ( номер снятия = 2 )
Сумма по чековым счетам = 759.8
Сумма по сберегательным счетам = 355
Общая сумма = 1114.8
Press any key to continue...
Рассмотрим каждую из функций-членов, начиная с класса Checking . Конструктор присваивает счёту его номер. Значение по умолчанию "= 0" позволяет программе создавать объект с номером счёта по умолчанию, равным нулю.
Checking c1 = new Checking( 124 ) ;
Checking с2 = new Checking( ) ;
_________________
354 стр. Часть 6. Великолепная десятка
В данном случае объект c1 класса Checking создаётся с номером счёта, равным 123, тогда как объект с2 создаётся с номером счёта по умолчанию, который равен нулю.
Функции accountNo( ) и acntBalance( ) предоставляют внешнему миру доступ к защищённым членам accountNumber и balance . Задачей этих функций является предоставление внешним функциям — не членам значений, изменить которые невозможно. Кроме того, эти функции, обеспечивающие доступ к членам, предохраняют внешние функции от необходимости внесения изменений при переменах в методе хранения номера счёта или баланса.
Функции deposit( ) и withdrawal( ) отвечают за вложение и снятие денег со счёта. Поскольку функция deposit( ) довольно проста, она была определена как inline -функция. Функция withdrawal( ) , будучи несколько сложнее, объявлена в классе, но определяется позже.
Функция display( ) выводит важные данные на устройство стандартного вывода.
Класс Savings , в сущности, идентичен классу Checking , за исключением дополнительного члена noWithdrawals , который отслеживает количество проведённых снятий.
Место под объекты сберегательного и чекового счёта выделяется в массивах svgAcnts и chkAcnts соответственно. Максимальное количество счетов определено величиной maxAccounts .
Функция main( ) несколько сложнее своей сестры из программы BUDGET1, поскольку она имеет дело с двумя разными типами счетов. После проверки ввода на равенство " X " функция main( ) использует конструкцию switch , чтобы выбрать тип счёта: С для чекового и S для сберегательного. Конструкция switch использована в этой программе по двум причинам: во-первых, её проще расширить, добавляя к ней дополнительные варианты; во-вторых, она предоставляет вариант default ( вариант по умолчанию ) для обработки неверного ввода.
Как и ранее, вторая часть функции main( ) обеспечивает отображение информации о счёте, собранной в первой части этой функции.
Обратите внимание на то, как содержимое классов Checking и Savings скрыто от main( ) . Так, например, main( ) просит объект показать своё содержимое, однако при этом не имеет никакого представления о том, как класс выбирает, что именно и как это показать.
Функция process( ) , которая обрабатывает текущие вложения и снятия, полагается на функции-члены deposit( ) и withdrawal( ) , которые выполняют за неё всю чёрную работу. Хотя вы и знаете, как именно выполняются эти действия, помните, что process( ) об этом не имеет никакого понятия. Работа счёта касается только самого класса счёта.
Советую пройти эту программу в пошаговом режиме. Ничто иное не даст более полного представления о программе, чем её рассмотрение в действии.
Хотите — верьте, хотите — нет, но с позиции программирования BUDGET2 разрабатывается легче, чем BUDGET1. Когда я писал класс Savings , я не должен был волноваться о том, как он будет использоваться главной программой ( то же относится и к классу Checking ). Когда же я работал над функцией main( ) , то не думал о содержимом класса.
Читать дальше