
Считываем информацию о пользователе
Введите 'exit' для выхода из программы
Введите имя: Stephen
Введите фамилию: Davis
Введите номер кредитной карты: 123456
_________________
152 стр. Часть 3. Введение в классы
Введите имя: Marshall
Введите фамилию: Smith
Введите номер кредитной карты: 567890
Введите имя: exit
Записи:
Stephen Davis/123456
Marshall Smith/567890
Для продолжения нажмите любую клавишу...
Вывод программы начинается с пояснения, как с ней работать. В первой строке я ввёл своё имя ( видите, какой я скромный! ). Поскольку меня не зовут exit , программа продолжает выполнение. Далее я ввёл свою фамилию и номер кредитной карты. Следующим элементом массива я ввёл имя Marshall Smith и номер его кредитной карты. Затем я ввёл строку exit и таким образом прервал цикл заполнения объектов. Как видите, эта программа не делает ничего, кроме вывода только что введённой информации.
_________________
153 стр. Глава 12. Классы в С++
Глава 13. РАБОТА С КЛАССАМИ...154
ОГЛАВЛЕНИЕ
В этой главе...
►Активизация объектов 154
►Добавление функции-члена 156
►Вызов функций-членов 157
►Разрешение области видимости 161
►Определение функции-члена 162
►Определение функций-членов вне класса164
►Перегрузка функций-членов 165
Программисты используют классы для объединения взаимосвязанных данных в один объект. Приведённый ниже класс Savings объединяет в себе баланс и уникальный номер счёта.
class Savings
{
public :
unsigned accountNumber ;
float balance ;
} ;
Каждый экземпляр класса Savings содержит одинаковые элементы:
void fn( void )
{
Savings a ;
Savings b ;
a.accountNumber = 1 ; /* этот счёт не тот же, что и... */
b.accountNumber = 2 ; /* ...этот */
}
Переменная а.accountNumber отличается от переменной b.accountNumber . Эти переменные различаются между собой так же, как баланс моего банковского счёта отличается от вашего ( хотя они оба называются балансами ).
►Активизация объектов...154
Классы используются для моделирования реально существующих объектов. Чем ближе объекты С++ к реальному миру, тем проще с ними работать в программах. На словах это звучит довольно просто, однако существующий сейчас класс Savings не предпринимает ничего, чтобы хоть в чём-то походить на настоящий банковский счёт.
_________________
154 стр. Часть 3. Введение в классы
Моделирование реальных объектов...155
Реальные объекты имеют свойства-данные, например номера счетов и балансы. Но кроме этого, реальные объекты могут выполнять действия: микроволновые печи готовят, сберегательный счёт начисляет проценты, полицейский выписывает штраф и т.д.
Функционально ориентированные программы выполняют все необходимые действия с помощью функций. Программа на С++ может вызвать функцию strcmp( ) для сравнения двух строк или функцию getLine( ) для ввода строки. В главе 24, "Использование потоков ввода-вывода", будет показано, что даже операторы работы с потоками ввода-вывода ( cin >> и cout << ) являются не чем иным, как особым видом вызова функции.
Для выполнения действий классу Savings необходимы собственные активные свойства:
class Savings
{
public :
unsigned deposit( unsigned amount )
{
balance += amount ;
return balance ;
}
unsigned int accountNumber ;
float balance ;
} ;
В приведённом примере помимо номера и баланса счёта в класс Savings добавлена функция deposit( ) . Теперь класс Savings может самостоятельно управлять своим состоянием. Так же, как класс MicrowaveOven ( микроволновая печь ) содержит функцию cook( ) ( готовить ), класс Savings содержит функцию deposit( ) . Функции, определённые в классе, называются функциями-членами.
Зачем нужны функции-члены...155
Почему мы должны возиться с функциями-членами? Что плохого в таком фрагменте:
class Savings
{
public :
unsigned accountNumber ;
float balance ;
} ;
unsigned deposit( Savings & s , unsigned amount )
{
s.balance += amount ;
return s.balance ;
}
Ещё раз напомню: пока что не обращайте внимания на символ " &" — его смысл станет понятен позже.
Читать дальше