Стефан Дэвис - С++ для чайников .
- Название:С++ для чайников .
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс. Компьютерное издательство Диалектика
- Год:2007
- Город:Москва
- ISBN:0-7645-6852-3, 978-5-8459-0723-3
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стефан Дэвис - С++ для чайников . краткое содержание
1
empty-line
4
С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Затем программа считывает имя и фамилию из стандартного ввода.
«Здесь я использую для хранения имени массив символов вместо типаstring .»
[ Помни! ]
_________________
150 стр. Часть 3. Введение в классы
Теперь программа может работать с объектом nds как с единым целым, не обращаясь к его отдельным частям, пока в этом не возникает необходимость.
/* DataSet — хранение связанных данных в массиве объектов */
#include
#include
#include
#include
using namespace std ;
/* NameDataSet — класс для хранения имени и номера кредитной карты */
class NameDataSet
{
public :
char firstName[ 128 ] ;
char lastName [ 128 ] ;
int creditCard ;
} ;
/* Прототипы функций: */
bool getData( NameDataSet & nds ) ;
void displayData( NameDataSet & nds ) ;
int main( int nNumberofArgs , char* pszArgs[ ] )
{
/* печать кириллицы если Вы не используете программки gccrus.exe и g++rus.exe */
setlocale ( LC_ALL , ".1251" ) ;
/* Выделяем память для 25 экземпляров */
const int MAX = 25 ;
NameDataSet nds[ MAX ] ;
/* Загружаем имя, фамилию и номер социального страхования */
cout << "Считываем информацию о пользователе\n"
<< "Введите 'exit' для выхода из программы"
<< endl ;
int index = 0 ;
while ( getData( nds[ index ] ) && index < MAX)
{
index++ ;
}
/* Выводим считанные имя и номер */
cout << "\nЗаписи:" << endl ;
for ( int i = 0 ; i < index ; i++ )
{
displayData( nds[ i ] ) ;
}
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
/* getData — заполнение объекта информацией */
bool getData( NameDataSet & nds )
_________________
151 стр. Глава 12. Классы в С++
{
cout << "\nВведите имя:" ;
cin >> nds.firstName ;
/* Проверяем, не пора ли выйти из программы */
if ( stricmp( nds.firstName , "exit" ) == 0 )
{
return false ;
}
cout << "Введите фамилию:" ;
cin >> nds.lastName ;
cout << "Введите номер кредитной карты:" ;
cin >> nds.creditCard ;
return true ;
}
/* displayData — Вывод набора данных */
void displayData( NameDataSet & nds )
{
cout << nds.firstName
<< " "
<< nds.lastName
<< " /"
<< nds.creditCard
<< endl ;
}
В функции main( ) создаётся массив из 25 объектов класса NameDataSet , после чего программа приглашает пользователя ввести необходимую информацию. Затем в теле цикла while происходит вызов функции getData( ) , которая ожидает ввода с клавиатуры содержимого элементов массива. Цикл прерывается, если getData( ) возвращает false или если количество заполненных объектов достигло максимального значения ( в данном случае — 25 ). После этого созданные объекты передаются функции displayData , которая выводит их на экран.
Функция getData( ) принимает аргумент типа NameDataSet , которому внутри функции присваивается имя nds . Пока что не обращайте внимания на символ " &" — о нём речь пойдёт в главе 14, "Указатели на объекты".
Внутри функции getData( ) происходит считывание строки из устройства стандартного ввода с последующей его записью в член firstName . Если stricmp( ) находит, что введённая строка — "exit" , функция getData( ) возвращает false функции main( ) , сигнализируя, что пора выходить из цикла ввода информации. ( Функция stricmp( ) сравнивает строки, не обращая внимания на регистр. Строки "EXIT" , "exit" и другие считаются идентичными. ) Если введена строка, отличная от "exit" , функция считывает из стандартного ввода фамилию и номер кредитной карты и записывает их в объект nds . Функция displayData( ) выводит на экран все члены объекта nds . Результат работы этой программы выглядит следующим образом.
Считываем информацию о пользователе
Введите 'exit' для выхода из программы
Введите имя: Stephen
Введите фамилию: Davis
Введите номер кредитной карты: 123456
_________________
152 стр. Часть 3. Введение в классы
Введите имя: Marshall
Введите фамилию: Smith
Введите номер кредитной карты: 567890
Введите имя: exit
Записи:
Stephen Davis/123456
Marshall Smith/567890
Для продолжения нажмите любую клавишу...
Вывод программы начинается с пояснения, как с ней работать. В первой строке я ввёл своё имя ( видите, какой я скромный! ). Поскольку меня не зовут exit , программа продолжает выполнение. Далее я ввёл свою фамилию и номер кредитной карты. Следующим элементом массива я ввёл имя Marshall Smith и номер его кредитной карты. Затем я ввёл строку exit и таким образом прервал цикл заполнения объектов. Как видите, эта программа не делает ничего, кроме вывода только что введённой информации.
_________________
153 стр. Глава 12. Классы в С++
ОГЛАВЛЕНИЕ
В этой главе...
►Активизация объектов 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
Реальные объекты имеют свойства-данные, например номера счетов и балансы. Но кроме этого, реальные объекты могут выполнять действия: микроволновые печи готовят, сберегательный счёт начисляет проценты, полицейский выписывает штраф и т.д.
Читать дальшеИнтервал:
Закладка: