Лекция: Файловая обработка объектов классов пользователя

 

Рассмотрим сериализацию данных классов пользователя.

Пусть создан новый класс пользователя СData. Включим в класс документа Clab4_2Doc объект нового класса DataObject:

Попытаемся выполнить все операции для сериализации. Проблема возникает в том, что нельзя воспользоваться функцией Serialize(). Придется запрограммировать процесс сериализации.

Общий принцип ООП состоит в том, что объект класса должен работать со своими собственными данными. Поэтому, необходимо добавить элемент-функцию Serialize () в новый класс.

Для сериализации данных класса пользователя необходимо выполнить следующие операции:

— Объявить класс, производный от CObject.

— В объявление класс включить макрос DECLARE_SERIAL (<имя класса>), служащий для включения дополнительных членов, которые необходимы для сериализации.

— Включить в реализацию класса (в файл CData.cpp) макрос IMPLEMENT_SERIAL. Этот макрос сопряжен с предыдущим: он обеспечивает реализацию сериализации. Три аргумента макроса – это имя класса, имя базового класса, номер схемы (1 или 0).

— Перегрузить функцию Serialize (), унаследованную от базового класса, т.е. добавить функцию Serialize () в класс пользователя.

//CData.h

сlass CData: public CObject

{//...

CString data;

DECLARE_SERIAL (CData) ;

void Serialize (CArchive& archive) ;

} ;

//CData.cpp

void CData :: Serialize (CArchive& archive) ;

{

CObject :: Serialize (archive); // Стандартный прием.

if (archive.IsStoring())

{

archive<<data; // data — элемент класса CData

}

else

{

archive>>data ;

}

}

IMPLEMENT_SERIAL (CData,CObject,0) ;

 

Для элементов класса CData сериализация выполнена.

Для выполнения сериализации объекта класса (в нашем примере это DataObject) следует вызвать функцию Serialize () класса CData внутри функции Serialize () документа, например,:

void Clab4_2Doc :: Serialize (CArchive& ar)

{

DataObject.Serialize(ar) ;

}

Цель работы — чтение и запись с диска не стандартных объектов MFC, объектов классов пользователя (лаб. работа lab4_2 – [7, c.43]). Пусть имеется собственный класс CData. Выполнить файловую обработку.

Для создания приложения lab4_2 выполнить этапы:

— Создание проекта lab4_2 (SDI-приложение),

— добавление нового класса в проект,

— ввод данных с клавиатуры,

— вывод текущего состояния документа,

— модификация собственного класса,

— создание новой версии Serialize() собственного класса,

— вызов Serialize нового класса внутри Serialize() документа.

Скомпилировать и протестировать приложение

 

еще рефераты
Еще работы по информатике