[c++] mmpi: сбор требований и дизайн
хочу для тренировки написать на с++ простенький mmpi опросник
http://ru.wikipedia.org/wiki/MMPI, ситуация точно такая же как и с
https://forum.shelek.ru/index.php/topic,21292.0.html, тупого кодинга на час полтора если знаешь, что писать, но ничего с первого раза без отладки не запустится, если накосячить на этапе планирования
хотя в данном случае, наверное вопрос не в том каким из 3х алгоритмов воспользоваться... a
реализацию каких задач следует описать перед кодингом?
может ли это сразу потребовать использования библиотек, кроме libstdc++?
по какому принципу лучше разделить реализацию задач на классы?
как описать интерфейс между классами так, чтобы при добавлении нового потомка класса, требовалось перекомпилить только модуль фабрики классов?
зы еще раз повторюсь задачка учебная, основные цели: заценить возможности полиморфизма при масштабировании проекта: добавлением новых шкал опросника, дальнейшим переносом взаимодействия с пользователем с консоли на гуй библиотеку, портированием кода с линуха на винду
+8h
решил раскидать задачи по 3м классам:
class io { // пользовательский интерфейс
show_question(); // показывает вопрос
get_answer(); // возвращает ответ
)
/* учитывая большое число вопросов, помимо ответов да\нет\возможно, будет еще возвращать
* сохранить\загрузить ответы
* возможно стоило передать указатель на контейнер для вызова методов сохранения\загрузки ответов?
*/
class container {
T data[num_quest];
string quest[num_quest];
save();
load();
set_tru();
const T& operator[](size_t);
io* pio;
}
map cio<answer,container::method>;
/* контейнер хранит вопросы и ответы, полученный ответ преобразовывается в ссылку на метод, который
* устанавливает ответ в data[] или вызывает save\load
*/
map<string,int> scale;
class count;
/* как реализовать еще не определил
* можно сделать по методу для расчета каждой шкалы
* можно сделать синтаксическим анализатором, который задаст
* в ассоциативном списке для каждой описанной в конфигурационном файле шкалы
* ее значение в соответствии с container::data
*/
вроде бы io должен использовать виртуальные функции, тк является пользовательским интерфейсом?
каким типом в него лучше передавать вопрос, и получать ответ?
( не могу определится с типом аргументов и возвращаемых значений у show_question и get_answer )
container вроде бы должен быть шаблоном в который передаются число вопросов и тип ответов?
но с другой стороны может возвращать его из фабрики считав тип теста из конфигурационного файла?
(если захочется заставить прогу работать с другим опросником)