Для практики ООП Я работаю над проектом хобби, программой викторины, которая читает таблицу из файла txt и задает вопросы о записях в таблице. Идея состоит в том, чтобы облегчить изучение материала, данного для курса в нашем отделе.OOP design - стратегии создания/шаблоны
До сих пор я писал бит ввода/вывода, составлял довольно скромный графический интерфейс и классы для представления различных типов объектов в datatable. Я не уверен в том, как приступить к ядру программы, хотя, я имею в виду вопрос генерации и проверки.
Моя первая идея состояла в том, чтобы иметь класс AbstractQuestion
, который в значительной степени определяет, что вопрос и какие поля он имеет (строковое представление, ответ и уровень сложности). Затем я подумал, что могу писать классы для разных типов вопросов, например, один класс для простых запросов по ценности (например, имя объекта и запрос определенного свойства), другой класс для более сложных вопросов (например, запрос о взаимодействиях объекты и т. д.).
Я не уверен, что это лучший способ пойти. Не могу выразить, почему, но у меня такое чувство, что это не самый простой способ. Было бы разумно работать над классом Factory? По существу, мне нужно:
- обеспечивает средства для вопроса, который будет сформирован на основе одного или более, лица произвольно выбранные из DataTable
- различных типов вопросов должны быть создано на время выполнения, на основе входных данных от пользователя (желаемый уровень сложности)
- вопросы должны быть проверены, и пользователь должен быть уведомлен основным классом
Quiz
(поэтому вопросы должны быть доступны).
Я мог бы начать простой и реализовать только один тип вопросов, заставить его работать и добавлять новые функции вовремя, но я думаю, что это хорошая практика, чтобы улучшить мое понимание ООП, и, кроме того, я боюсь, если он работает и я начинаю давать это людям, чтобы проверить это, я в конечном итоге в конечном итоге работаю над чем-то другим. Я хотел бы лучше концептуализировать свой проект, и я думаю, что это может быть хорошей возможностью улучшить это.
PS: В случае, если это не было очевидно, я не программист на образовании :)