|
Программирование >> Аргументация конструирования
Функции ata о принимает аргумент тип ataSet, которому внутри функции присваивается имя Пока что не обращайте внимания на символ - о нем речь пойдет в главе 15, Создание указателей на объекты . Внутри функции getDataO происходит считывание строки из устройства стандартного ввода с последующей его записью в член firstName. Если stricmp () находит, что введенная строка- exit , функция getDataO возвращает С в функцию main (), сигнализируя, что пора втходить из цикла ввода информации. (Функция stricmp О сравнивает строки, не обращая внимапия па регистр. Строки EXIT , exit и другие считаются идентичными.) Если введена не строка exic , функция считывает из стандартного ввода фамилию и номер кредитной карты и записывает их в объект nds. Функция displayData () выводит на дисплей все члены объекта nds. Результат работы этой программы будет выглядеть так: Считывает имя/номер карты Введите exit в поле имени для выхода Введите имя: Stephen Введите фамилию: Davis Введите номер кредитной карты: 123456 Введите имя; Marshall Введите фамилию: Smith Введите номер кредитной карты: 5678 90 Введите имя: exit Элементы: Stephen Davis/12 345 6 Marshall Smith/567890 Вывод программы начинается с пояснения, как с ней работать. В первой строке я ввел свое имя (видите, какой я скромный!). Поскольку меня не зовут exit, программа продолжает выполнение. Далее я ввел свою фамилию и номер кредитной карты. Следующим элементом массива я ввел имя Marshall Smith и номер его кредитной карты. Затем я ввел строку exit и таким образом прервал цикл заполнения объектов. Как видите, эта программа не делает ничего, кроме вывода только что введенной информации. Гл£ва14 Работа с классами Baifiou главе... Активизация объектов У Добавление функции-члена У Вызов функций-членов У Доступ к членам из функции-члена У Разрешение области видимости / Определение функции-члена У Определение функций-членов вне класса У Перегрузка функций-членов ш у рограммисты используют классы для объединения взаимосвязанных данных fc в один объект. Приведенный ниже класс Savings объединяет в себе баланс и уникальный номер счета. class Savings public: unsicned accountNumber; float balance; Каждьп! экземпляр класса Savings содержит одинаковые элементы: void fn(void) Savings a; Savings b; a. acc:ountNumber = 1; этот счет не тот же, что и... b. acc;ountNumber = 2; ... этот Переменная а. accountNuirJoer отдичастся от переменной Ь. accountNumber. Эти переменные различаются между собой так же, как баланс моего банковского счета отличается от вашего (хотя они оба называются балансами). Классы используются для моделирования реально существующих объектов. Чем ближе объекты C + + к реальному миру, тем проще с ними работать в программах. На словах это звучит довольно просто, однако существующий сейчас класс Savings не предпринимает ничего, чтобы хоть в чем-то походить на настоящий банковский счет. Моделирование реальных объектов Реальные объекты имеют свойства-данные, например номера счетов и балансы. Но кроме этого, реальные объекты могут выполнять действия: микроволновые печи готовят, сберегательный счет начисляет проценты, полицейский выписывает штраф и т.д. Функционально ориентированные программы выполняют все необходимые действия с помощью функций. Программа на С + + может вызвать функцию strcmp() для сравнения двух строк или функцию getLine () для ввода строки. В главе 26, Использование потоков ввода-вывода , будет показано, что даже операторы работы с потоками ввода-вывода (cin и cout ) являются не чем иным, как особым видом вызова функции. Для выполнения действий классу Savings необходимы собственные активные свойства: class Savings public: unsigned accountNumber; float balance; unsigned deposit(unsigned amount) balance += amount; return balance; В приведенном примере помимо номера и баланса счета в класс Savings добавлена функция deposit (). Теперь класс Savings может самостоятельно управлять своим состоянием. Так же, как класс MicrowaveOven (микроволновая печь) содержит функцию cook О (готовить), класс Savings содержит функцию deposit (). Функции, определенные в классе, называются Зачем нужны функции-члены Почему мы должны возиться с функциями-членами? Что плохого в таком фрагменте: class Savings public: unsigned accountNurnber; balance; unsigned deposit ( Savings s gned amount) s.balance amount; return s.balance; Еще раз напомню: пока что не обращайте внимания на символ s - его смысл станет понятен позже. В этом фрагменте deposit() является функцией вклада на счет . Эта функция поддержки реализована в виде внешней функции, которая выполняет необходимые действия с экземпляром класса Savings. Конечно, такой подход имеет право на существование, но он нарушает наши правила объектно-ориентированного программирования.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |