Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по программированию.doc
Скачиваний:
11
Добавлен:
13.11.2019
Размер:
1.2 Mб
Скачать

Void main(void)

{

BASE bas1,bas2; int i;

FILE *f1;

bas1.num[0]=0;

strcpy(bas1.name[0],"Ivanov");

bas1.age[0]=44;

strcpy(bas1.sex[0],"m");

f1=fopen("C:\ivb\ppis\bas1f.txt","wb");

fwrite(&bas1,sizeof(bas1),1,f1);

fclose(f1);

f1=fopen("C:\ivb\ppis\bas1f.txt","rb");

fread(&bas2,sizeof(bas1),1,f1);

puts(bas1.name[0]);

fclose(f1);

getch();

}

В приведенном листинге объявлен тип структуры BASE, и в главной функции созданы два экземпляра структуры bas1 и bas2. В программе инициализируются поля для первого (точнее – нулевого) сотрудника с номером 0, фамилией Ivanov, возраст 44 года, пол мужской. Остальные девять «строк» в структуре остаются не инициализированными. По некоторому пути в файловой системе открывается для записи двоичный файл с именем bas1f.txt. Расширение txt не должно вводить читателя в заблуждение. Мода wb функции открытия файла fopen определяет то, что файл именно двоичный и открыт для записи. Нетрудно видеть, что в указанный дисковый файл целиком копируется структура bas1. Далее файл закрывается и вновь открывается уже для чтения. Содержимое файла копируется в экземпляр структуры bas2, и из этой структуры извлекается и выводится на экран фамилия пользователя. При правильной работе программы на экран должно быть напечатано, естественно, слово Ivanov. Наверное, нет нужды подробно пояснять, что здесь представлена «заготовка» работы со структурой в форме некоторой базы данных – ее создание, изменение и сохранение на диске в виде файла.

Классы

Понятие класса видимо является ключевым и основополагающим понятием объектно-ориентированного программирования (ООП). С другой стороны это понятие является логическим продолжением и расширением понятия структуры, с которым оперируют и не объектно-ориентированные системы. Также как и структура, класс с полным основанием можно рассматривать как новый тип данных. Переменные такого типа как раз и являются теми самыми объектами, которые и дали название ООП.

Переход от структуры к классу, как расширение структуры, в первую очередь связано с возможностью включения в класс кроме переменных-членов еще и функций-членов. В современной литературе по ООП принято называть функции-члены методами класса, а переменные-члены – свойствами класса. Вторым важнейшим отличием от структуры является то, члены класса (как переменные, так и функции) могут быть либо открытыми, либо закрытыми. По умолчанию все члены класса являются закрытыми. Это означает то, что оперировать с закрытыми данными могут только собственные методы класса. Если же необходимо получить доступ к свойствам извне (например, из главной функции программы), то свойства должны быть объявлены открытыми с помощью ключевого слова public: Разумеется, для обеспечения возможности вызова функций-членов извне необходимо эти методы также объявить открытыми.

В простейшем виде синтаксис объявления класса может выглядеть следующим образом:

class имя-класса

{

// Объявления закрытых членов класса

public:

// Объявления открытых членов класса

}[Объекты];

Формально имя класса может быть опущено, аналогично тегу структуры. На практике же имя задается практически всегда. Также, аналогично структурам, после закрывающей фигурной скобки может быть сформирован список объектов класса – по именам или указателям. При этом сразу при объявлении класса создаются и соответствующие объекты и их дополнительного описания в других функциях программы или в виде глобальных переменных уже не требуется.

Для задания переменных-членов в классе дело обстоит точно так же, как и в структурах. Необходимо только четко представлять себе какие из свойств в вашей программе следует сделать открытыми, а какие – закрытыми. Что же касается декларирования методов класса, то здесь следует объявлять только прототипы функций, то есть указывать тип функции (тип возвращаемого значения), имя функции и в круглых скобках типы аргументов. Например, для метода, вычисляющего некое целочисленное значение по двум целочисленным аргументам, объявление прототипа может выглядеть так: