|
Программирование >> Аргументация конструирования
После ключевого слова public идет описание полей класса. Как видно из листинга, класс NaneDaraSet содержит ноля имени, фамилии и номера кредитной карты. Первые два поля являются символьными массивами, а третье имеет тип int (будем считать, что это и есть номер кредитной карты). Объявление класса содержит поля данных, необходимые для описания единого объекта. В последней строке этого фрагмента объявляется переменная nds, которая имеет тип NameDataSet. Таким образом, nds представляет собой запись, описывающую отдельного человека. Говорят, что nds является экземпляром класса ataSet и что мы создали этот экземпляр, реализовав класс NameDataSet. Мы говорим, что поля firstName и остальные являются членами, или свойствами класса. Эти глупые слова будут использоваться и в дальнейшем в рассуждениях о классах. Обращение к членам класса Обратиться к членам класса можно так: NameDataSet nds; nds.creditCard = 1С; cin nds.firstName; cin >> nds.lastName; Здесь nds - экземпляр класса NameDataSet (или отдельный объект типа NameDataSet); целочисленная переменная nds.creditCard- свойство объекта nds; член nds.crecitCard имеет тип int, тогда как другой член этого объекта, nds . firstName, имеет тип char [-j. Если не пользоваться компьютерным сленгом, приведенный пример можно объяснить так: в этом фрагменте программы происходит объявление объекта nds, который затем будет использован для описания покупателя. По каким-то соображениям программа присваивает этому человеку кредитный номер 10 (понятно, что номер фиктивный - я ведь не собираюсь распространять номера своих кредитных карт!). Затем программа считывает имя и фамилию из стандартного ввода. Теперь программа может работать с объектом nds как с единым целым, не обращаясь к его отдельным частям, пока в этом не возникает необходимость. int getData(NameDataSetS nds) { cout < едите имя : ; cin >> nds , firs tNam.e; if (stricmp(nds.firstName, exit ) 0) return 0; cout Введите фамилию: ; cin nds . lastName; cout << Введите номер кредитной карты; ; cir nds.creditCard; return 1; Глава 13. Классы в C++ 143 ayData - выводит содержимое множества данных void displayData(NameDataSet& nds) cout nds . f irstNaKiG << << / << \n ; in rndnt nArg, char* pszArgs[]) const int MAX = 2 5; создать 2 5 объектов типа NameDataSet NameDataSet nds[MAX]; считывает имена, фамилии и номера кредитных карт coat Считывает имя/коыер картвДп << Введите в поле имени exit\n для выхода из программьЛп ; int index --0; whil [ index] ) 5£ index < MAX) { index++; cout ХпЭлементы;\n ; for (int i = 0; i < index; i++) { displayData(nds[i]); return 0; Пример программы Приведенный ниже пример демонстрирует использование класса NameDataSet, записывает информацию в массиве объектов #include stdio.h> #include <iostream.h> tinclude <stEing.h> - содержит имя клиента / / и номер кредитной карты class NameDataSet { public; char ; char lastName [12 8] ; int creditCard; int nds) cout << ХпВвеците имя: ; cin >> nds,firstName; s. firstName, exit ) == 0) return 0; cout << Введите фамилию: ; cin nds.lastName; cout << Введите номер кредитной карты: cin nds.creditCard; return 1; ayData - выводит содержимое одного элемента NameDataSet void displayData(NameDataSeti nds) { cout nds.firstName nds.lastName / * nds.creditCard << \n ; in (int nArg, char* pszArgs[]) const int MAX = 2 5; создать 25 объектов типа NameDataSet NameDataSet nds[MAX]; считывает фамилии и номера кредитных карт cout << Считывает имя/номер карты\п << Введите Vxit в поле имени для выходаХп ; int index = 0; whil s [ index] ) S& index < MAX) { index++; cout << ХпЭлементы;\n ; for (int 1 = 0; i < index; i + + ) i displayData(nds[i]); return В функции main () создается массив из 25 объектов класса NameDataSet, после чего программа приглашает пользователя ввести необходимую информацию. Затем теле цикла while происходит вызов функции getData О, которая ожидает ввода с клавиатуры содержимого элементов массива. Цикл прерывается, если getData () возврашает 0 или если количество заполненных объектов достигло максимального значения (в данном случае - 25). После этого созданные объекты передаются функции displayData, которая выводит их на экран. Глава 13. Классы в C++ 1Г5
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |