Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Рассмотрим сериализацию данных классов пользователя.
Пусть создан новый класс пользователя С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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!