Головна |
Розглянемо сериализацию даних класів користувача.
Нехай створений новий клас користувача С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 () документа.
Скомпілювати і протестувати додаток
Постановка завдання та визначення специфікацій | Складання початкової ієрархії і структури класів | Реорганізація ієрархії і структури класів | Файл інтерфейсу базового класу | Роботу в Windows | Система вікон розробки і система меню | Бібліотека класів MFC | Основи візуального програмування. | система меню | Система діалогових вікон і елементів управління |