72
теста (свойство EndDate), порядковый номер текущего вопроса в тесте
(свойство CurrentQ), количество вопросов, на которые пользователь дал ответ
(свойство CountQA), количетсво вопросов, на которые пользователь дал
правильный ответ, т.е. ответ с весом, отличным от нуля (свойство CorrectA),
вычисленный результат прохождения теста (свойство Res). Отдельно
остановимся на свойстве Questions, представляющий из себя динамический
список типа TList. При заполнении значений этого списка в него помещаются
динамически созданные объекты класса TQuestion. В дальнейшем при
обращении к объектам динамического списка Questions используются свойства
и методы класса TQuestion. Таким образом, объекты динамического списка
представляют из себя вопросы теста, а сам список – список вопросов теста.
Для реализации работы с объектом предметной области «Тест» в
программной реализации класса TTest предусмотрены следующие методы:
конструктор TTest – предназначен для выделения памяти для
динамически создаваемых объектов, прежде всего для списка вопросов, а
также для первоначального заполнения значений свойств объекта;
деструктор ~TTest – предназначен для освобождения памяти из под
динамически создаваемых объектов;
LoadFromBD – предназначен для загрузки из базы данных свойств
теста;
LoadQuests – предназначен для загрузки из базы данных списка
вопросов;
GetQuest – предназначен для получения из списка вопросов объекта
класса TQuestion по его порядковому номеру.
Отметим отдельно, что класс TTest инкапсулирует в себе все необходимые
свойства и методы для загрузки теста вместе со списком вопросов и ответов
из базы данных. Таким образом, объекту класса TTest не требуется
визуального представления ни для своего отображения, ни для обращения к
базе данных. Для обращения к базе данных предназначены свойства раздела
private QueryTmp и QueryTmp1 типа TQuery из библиотеки VCL, которые и