Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Обращение к членам класса
Обратиться к членам класса можно так:
nds.creditCard = 1С; cin >> cin . Здесь nds — экземпляр класса NameDataSet (или отдельный объект типа NameDa- taSet) ; целочисленная переменная nds.creditCard — свойство объекта nds; член crecitCar d имеет тип int , тогда как другой член этого объекта, nds . имеет тип char [ Если не пользоваться компьютерным сленгом, приведенный пример можно объяс- нить так: в этом фрагменте программы происходит объявление объекта nds, который затем будет использован для описания покупателя. По каким-то соображениям про- грамма присваивает этому человеку кредитный номер 10 (понятно, что номер фик- тивный — я ведь не собираюсь распространять номера своих кредитных карт!). Затем программа считывает имя и фамилию из стандартного ввода. Теперь программа может работать с объектом nds как с единым целым, не обра- щаясь к его отдельным частям, пока в этом не возникает необходимость. in t nds) { << имя : " ; >>
"exit") { return 0;
<< "Введите фамилию:"; >> nds .
cout << "Введите номер кредитной карты: >> nds.creditCard; return 1;
Глава 13. Классы в C++ // — выводит содержимое множества данных void { << << " " << « << « } int nArg, char* pszArgs[]) { const int MAX = 25; // создать 25 объектов типа
// считывает имена, фамилии и номера // кредитных карт coat << "Считывает карть:\п" "Введите в поле имени « "для выхода из int index 0; while index < MAX) { index++; } cout « for (int i 0; i < index; i++) { ); } return 0; }
Пример программы Приведенный ниже пример демонстрирует использование класса NameDataSet, // записывает информацию // в объектов <stdio.h>
// — содержит имя клиента // и номер кредитной карты class {
char ; char lastName [128]; int creditCard;
int nds) { cout << ";
144 Часть HI. "Классическое" программирование cin >>
if "exit") == 0) { return 0;
<< "Введите фамилию: "; cin >>
<< "Введите номер кредитной карты: cin » return 1;
// — выводит содержимое // одного элемента NameDataSet void nds) { cout << << " " << « « << "\n"; } int nArg, char* pszArgs[]) { const int MAX = 25; // создать 25 объектов типа NameDataSet NameDataSet // считывает фамилии и номера // кредитных карт cout << "Считывает имя/номер карты\п" << "Введите в поле имени для int index while index < MAX) { index++; } cout << for (int i 0; i < index; i++) i ) return } В функции () создается массив из 25 объектов класса NameDataSet, после чего программа приглашает пользователя ввести необходимую информацию. Затем в цикла while происходит вызов функции getData О, которая ожидает ввода с клавиатуры содержимого элементов массива. Цикл прерывается, если () возврашает 0 или если количество заполненных объектов достигло максимального значения (в данном случае — 25). После этого созданные объекты передаются функ- ции displayData, которая выводит их на экран. Глава 13. Классы в C++ 145 Функция принимает аргумент типа которому внутри функции присваивается имя Пока что не обращайте внимания на символ — о нем речь пойдет в главе 15, "Создание указателей на объекты". Внутри функции getData O происходит считывание строки из устройства стан- дартного ввода с последующей его записью в член Если нахо- дит, что введенная строка— "exit" , функция возвращает С в функцию main (), сигнализируя, что пора выходить из цикла ввода информации. (Функция stricmp O сравнивает строки, не обращая внимания на регистр. Строки "EXIT", "exit " и другие считаются идентичными.) Если введена не строка функция считывает из стандартного ввода фамилию и номер кредитной карты и записывает их в объект nds. Функция dispIayData () выводит на дисплей все члены объекта nds. Результат работы этой программы будет выглядеть так: Считывает имя/номер карты Введите в поле имени для выхода Введите Stephen фамилию: Введите номер кредитной карты: 123456 Введите Marshall Введите фамилию: Smith Введите номер кредитной карты: 90 Введите exit Элементы: Stephen Davis/123456 Marshall Smith/567890 Вывод программы начинается с пояснения, как с ней работать. В первой строке я ввел свое имя (видите, какой я скромный!). Поскольку меня не зовут exit , про- грамма продолжает выполнение. Далее я ввел свою фамилию и номер кредитной кар- ты. Следующим элементом массива я ввел имя Marshall Smith и номер его кредит- ной карты. Затем я ввел строку exi t и таким образом прервал цикл заполнения объ- ектов. Как видите, эта программа не делает ничего, кроме вывода только что введенной информации.
146 Часть "Классическое" программирование Глава14 Работа с классами Активизация объектов Добавление функции-члена Вызов функций-членов Доступ к членам из функции-члена Разрешение области видимости Определение функции-члена Определение вне класса Перегрузка функций-членов
рограммисты используют классы для объединения взаимосвязанных данных в один объект. ниже класс Savings объединяет в себе баланс и уникальный номер счета. class Savings {
};
void ( balance;
экземпляр класса Savings содержит одинаковые элементы:
Savings a; Savings b; 1; // этот счет не тот же, что и... = 2; // ... этот } Переменная отличается от переменной b. accountNumber. Эти переменные различаются между собой так же, как баланс моего банковского счета от- личается от вашего (хотя они оба называются балансами).
Классы используются для моделирования реально существующих объектов. Чем ближе объекты C++ к реальному миру, тем проще с ними работать в про- граммах. На словах это звучит довольно просто, однако существующий сейчас класс не предпринимает ничего, чтобы хоть в чем-то походить на на- стоящий банковский счет. |
Последнее изменение этой страницы: 2019-04-19; Просмотров: 232; Нарушение авторского права страницы