Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

Пусть создан новый класс пользователя С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() документа.

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





Дата публикования: 2014-11-26; Прочитано: 206 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...