|
Программирование >> Аргументация конструирования
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. Частью Наследование
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |