Задание 3. Сериализация и автодокументация по исходному коду
Сериализация и автодокументация по исходному коду

К четвертому заданию в рамках практикума АСВК добавляются требования.

Первая часть задания (сериализация):

При проектировании архитектуры необходимо выделить в отдельный класс набор всех параметров, определяющих визуализируемую сцену (тип примитива или фрактала, положение, протяженность, параметры источника света, материала, другие параметры);
Для этого класса необходимо реализовать сериализацию (специальный вид загрузки и сохранения в файл);
Программа должна поддерживать два типа файлов настроек: текстовые (предпочтительно – XML) и бинарные (ваш внутренний формат);
С программой (в каталоге data рядом с bin и src) должны поставляться несколько разных примеров (как минимум два, оба в двух вариантах: в бинарном и текстовом виде);
Должна быть возможность сохранить и загрузить файлы (в текстовом и бинарном виде);
Все классы-сериализаторы (осуществляющие чтение и запись) должны реализовывать один (!) интерфейс для сериализации (чтения и записи) простых типов данных. Таким образом, всего должно получиться 4 класса-сериализатора, реализующих один интерфейс;
В классе сцены должна быть всего одна функция для сериализации, на вход которой подается интерфейс сериализатора. Эта функция будет и читать, и сохранять сцену в файл (как бинарный, так и текстовый).
Вторая часть задания: с использованием утилиты Doxygen (http://doxygen.org) или любой другой сделать документацию к вашему коду:

документация должна целиком генерироваться автоматически по коду из комментариев к классам, функциям, переменным. Формат документации – CHM;
необходимо включить страницу с общим описанием архитектуры вашей программы;
язык - русский или английский;
документация должна быть у каждого класса, метода, параметра вашей программы (не нужно документировать внешние библиотеки, которые вы использовали). Как минимум необходимо задокументировать классы и интерфейс сериализации, а также класс сцены;
документация должна иметь практическое значение (не имеет смысла повторять в комментарии название переменной или метода, укажите лучше смысл использования, для параметров - допустимые значения и т.п.);
документация должна лежить в подкаталоге doc вашего архива (рядом с bin,src).

Примечания:

В рамках учебного задания сериализация должна быть реализована «с нуля», нельзя использовать библиотеки и встроенные средства языка (например C# / .NET) для сериализации.