Определение структуры иерархических данных в сравнении с фактическим хранением данных - PullRequest
2 голосов
/ 15 сентября 2011

Я пытаюсь разработать приложение для опроса, которое может работать с различными типами ответов, такими как логический, множественный выбор, а также в диапазоне от 1-5, 1-10, 1-100, -2 до +2, даже десятичные значения.Итак, я создал иерархию типов ответов:

class Response {
        String name
}

class BooleanResponse extends Response {
        boolean score
}

class SimpleGradeResponse extends Response {
        char score // A-F
}

class ComplexGradeResponse extends Response {
        char score // A-F
        char modifier // +, -, blank
}

class IntegerResponse extends Response {
        int min, max, score
}

class DecimalResponse extends Response {
        double min, max, score
}

Я считаю это метаданными.Он описывает типы ответов на опрос.У вас может быть вопрос 1, который представляет собой IntegerResponse от 1 до 10, вопрос 2, который представляет собой IntegerResponse от 0 до 100, вопрос 3, который представляет собой DecimalResponse и т. Д.

Где я не уверен, где хранить фактические ответы отпользователи.Вы смешиваете оценки с метаданными, как я сделал с полем оценки выше?Это кажется неудобным, так как каждый ответ типа диапазона несет в себе минимальное и максимальное значения.

Что я действительно хочу (я думаю), так это иметь возможность каррировать параметры ответа диапазона для создания нового типа, а затемотразить этот тип в таблице фактических ответов.Итак, вопрос, который занимает диапазон 1-10, будет строкой в ​​IntegerResponse с min = 1 и max = 10.Но как таблица ActualResponse (мне нужно улучшить соглашение об именах, как только я это выясню!) Хранит счет и ссылается на каррированный IntegerResponse с установленными min и max?

Если есть лучший способподойти ко всей этой проблеме, я очень хочу это услышать.

Спасибо, Ли

1 Ответ

0 голосов
/ 15 сентября 2011
  1. min и max лучше хранить в объекте Question или даже в QuestionType - в зависимости от того, насколько гибкой должна быть система во время выполнения.
  2. Будет либыть произвольными ограничениями на различные виды Response с?Структура данных во многом зависит от этого.Вы можете жестко закодировать различные типы Response или поддерживать их во время выполнения.Первый подход на порядок проще.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...