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

1 ... 67 68 69 [ 70 ] 71 72 73 ... 108


pSavings->deposit(transaction); , / снятие

if (transaction < 0)

pSaving3->withdrawal(-transaction) ; } while (transaction != 0) ;

Я запустил эту программу енными ниже данными для того, чтобы продемонстрировать, как она работает (хотя почему-то чаще мои программы не работают). Жирн1и шрифтом выделен пользовательский ввод, а обычным представлены сообщения программы.

Введите 8 для сберегательных счетов,

С для чековых, X для выхода: S Введите номер счета:123

Введите положительное число для Е клада,

отрицательное для снятия, 0 для завершения

:200

:-20

Введите для счетов,

С для чековых, X для Введите номер счета;234

Введите положительное число для вклада, отрицательное для снятия, 0 для завершения :200 :-10 :-10 :0

Введите 3 для сберегателвных счетов, С для чековых, X для выхода:С Введите номер счета:345

Введите положительное число для вклада, отрицательное для снятия, 0 для завершения

:200

:-20

Введите 3 дл мтельных счетов, С для чековых, X для выхода:С Введите номер счета:456

Введите положительное число для вклада, отрицательное для снятия, 0 для завершения

:600

:-20

Введите S дл ттельных счетов, С для чековых, X для выхода:Х

Чековые счета:

Счет 345 = ПЭ.8

Счет 456 = 580

Сберегательные счета:

Счет 12 3 = 180 (номер снятия = 1)

Счет 234 = 175 (номер снятия = 2)

Сума по чековым счетам = 7 5 9.8



Сумма по сберегательным счетам = 3 55 Общая сумма = 1114.8

Рассмотрим каждую из функций-членов, начиная с класса king. Конструктор присваивает счету его номер. Значение по умолчанию = 0 позволяет программе создавать объект с номером счета по умолчанию, равным нулю.

Checking с1 = new Checking(124); Checking с2 = new Checking () ;

В данном случае объект класса создается с номером счета, равным

тогда как объект с2 создается с номером счета по умолчанию, который равен нулю.

Функции ntNo () и acntBalance () предоставляют внешнему миру доступ к защищенным членам accountNarrlser и balance. Задачей этих функций является предоставление внешним функциям - не членам значений, изменить которые невозможно. Кроме того, эти функции, обеспечивающие доступ к членам, предохраняют внешние функции от необходимости внесения изменений при переменах в методе

хранения номера счета или баланса.

Функции () и () отвечают за вложение и снятие денег со

счета. Поскольку функция deposit () довольно проста, она бьша определена как inline-функция. Функция withdrawal (), будучи несколько сложнее, объявлена в классе, но определяется позже.

Функция display (} выводит важные данные на устройство стандартного вывода.

Класс Savings, в сущности, идентичен классу checking, за исключением дополнительного члена noWithdrawals, который используется для отслеживания количества проведенных снятий.

Место под объекты сберегательного и чекового счета выделяется в массивах svgAcnts и chkAcnts соответственно. Максимальное количество счетов определено величиной maxAccounts.

Функция () несколько сложнее своей сестры из

скольку она имеет дело с двумя разными типами счетов. После проверки ввода на равенство X функция mam () иснользует конструкцию switch, чтобы выбрать тип

счета: с для чекового и S для сберегательного. Конструкция switch использована

в этой программе по двум причинам: во-первых, ее проще расширить, добавляя к ней дополнительные варианты; во-вторых, она предоставляет вариант default (вариант по умолчанию) для обработки неверного ввода.

Как и ранее, вторая часть функции main О обеспечивает отображение информации о счете, собранной в первой части этой функции.

Обратите внимание на то, как содержимое классов Checking и Savings скрыто от main (). Так, например, main () просит объект показать свое содержимое, однако при этом не имеет никакого представления о том, как класс выбирает, что именно и как это показать.

Функция process (), которая обрабатывает текущие вложения и снятия, полагается на функции-члены deposit () и withdrawal (), которые выполняют за нее всю черную работу. Хотя вы и знаете, как именно выполняются эти действия, помните, что process () об этом не имеет никакого понятия. Работа счета касается только самого класса счета.

Советую пройти эту программу в пошаговом режиме. Ничто иное не даст более полного представления о программе, чем ее рассмотрение в действии.

Хотите - верьте, хотите - нет, но с позиции программирования Budget2 разрабатывается легче, чем Budget 1. Когда я писал класс Savings, я не должен был волноваться о том, как он будет использоваться главной программой (то же относится и к классу Checking). Когда же я работал над функцией main (), то не думал о содержимом класса.

Однако в этой программе есть один небольшой недостаток: классы Savings

и Checking имеют очень много общего, и хотелось бы найти возможность уменьшить количество новторений кода. Эта возможность и является темой части 4, Наследование , в конце которой вы найдете очередную версию нашей программы - Budgets.



Частью

Наследование




1 ... 67 68 69 [ 70 ] 71 72 73 ... 108

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