Программирование >>  Аргументация конструирования 

1 ... 41 42 43 [ 44 ] 45 46 47 ... 108


После ключевого слова 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



1 ... 41 42 43 [ 44 ] 45 46 47 ... 108

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика