- •Создание диаграммы классов для сценария «Добавить новый учебный материал» прецедента «Управление учебным контентом»
- •Создание диаграммы классов для сценария «Пройти тест по теме» прецедента «Оценка знаний обучающегося»
- •Построение диаграммы объектов для сценария «Добавить новый учебный материал».
- •Построение диаграммы пакетов
Создание диаграммы классов для сценария «Пройти тест по теме» прецедента «Оценка знаний обучающегося»
Рассматриваемый сценарий состоит из:
Теста, который пользователь должен пройти;
Вопросов, входящих в тест;
Вариантов ответов на каждый вопрос;
Пользователя, проходящего тестирование;
Ответов пользователя, которые сохраняются и анализируются системой.
Создаются такие классы-сущности, как: User (обучающийся), Test (тест), Question (вопрос), AnswerOption (вариант ответа), UserAnswer (ответ пользователя). Один пользователь может пройти несколько тестов, каждый тест содержит вопросы с вариантами ответов, а пользовательские ответы сохраняются для анализа. Опишем каждый класс, результаты описания представлены в таблицах 5-9.
Таблица 5 – Класс User
Параметр |
Значение |
Комментарий |
Класс, представляющий зарегистрированного пользователя |
Атрибуты |
name: String – имя id: int – идентификатор пользователя email: String – адрес электронной почты password: String – хэш пароля Все атрибуты имеют модификатор доступа – private |
Операции |
register() – регистрация login() – вход в систему startTest() – начать тестирование Все операции имеют модификатор доступа – public |
Таблица 6 – Класс Test
Параметр |
Значение |
Комментарий |
Класс, представляющий тест по определённой теме |
Атрибуты |
testID: int – идентификатор теста title: String – название description: String – описание lessonID: int – ID связанного урока Все атрибуты имеют модификатор доступа – private |
Операции |
getQuestions() – получить список вопросов evaluateResults() – оценить результат теста Все операции имеют модификатор доступа – public |
Таблица 7 – Класс Question
Параметр |
Значение |
Комментарий |
Класс, представляющий отдельный вопрос в тесте |
Атрибуты |
questionID: int – идентификатор вопроса text: String – формулировка вопроса test: Test – тест, к которому относится Все атрибуты имеют модификатор доступа – private |
Операции |
getOptions() – получить варианты ответов getCorrectOption() – получить правильный ответ Все операции имеют модификатор доступа – public |
Таблица 8 – Класс AnswerOption
Параметр |
Значение |
Комментарий |
Класс, представляющий вариант ответа на вопрос |
Атрибуты |
answerID: int – идентификатор ответа answerText: String – текст ответа isCorrect: Boolean – флаг правильности question: Question – вопрос, к которому относится Все атрибуты имеют модификатор доступа – private |
Операции |
markCorrect() – отметить как правильный editText() – изменить текст Все операции имеют модификатор доступа – public |
Таблица 9 – Класс UserAnswer
Параметр |
Значение |
Комментарий |
Класс, представляющий ответ пользователя на вопрос |
Атрибуты |
user: User – пользователь question: Question – вопрос selectedOption: AnswerOption – выбранный вариант timestamp: DateTime – дата и время ответа Все атрибуты имеют модификатор доступа – private |
Операции |
checkCorrectness() – проверить правильность saveAnswer() – сохранить ответ Все операции имеют модификатор доступа – public |
Добавим отношения между классами (рис. 2):
Класс User и UserAnswer — отношение ассоциации, поскольку пользователь отвечает на вопросы, но UserAnswer — самостоятельный объект. Один пользователь может дать множество ответов, каждый ответ связан только с одним пользователем. Кратность связи со стороны User — 1, со стороны UserAnswer — 1..n.
Класс Test и Question — отношение композиции, поскольку вопросы создаются в рамках конкретного теста и не существуют вне его. Один тест включает множество вопросов, каждый вопрос принадлежит только одному тесту. Кратность связи со стороны Test — 1, со стороны Question — 1..n.
Класс Question и AnswerOption — отношение композиции, так как варианты ответов относятся к конкретному вопросу и не могут использоваться отдельно. Один вопрос имеет несколько вариантов ответов, каждый вариант принадлежит только одному вопросу. Кратность связи со стороны Question — 1, со стороны AnswerOption — 1..n.
Класс Question и UserAnswer — отношение ассоциации, поскольку ответ пользователя связан с конкретным вопросом. Один вопрос может иметь множество ответов пользователей, каждый ответ связан с одним вопросом. Кратность связи со стороны Question — 1, со стороны UserAnswer — 1..n.
Класс AnswerOption и UserAnswer — отношение ассоциации, так как пользователь выбирает один из вариантов ответа. Один вариант ответа может быть выбран разными пользователями в разных попытках, каждый UserAnswer содержит один AnswerOption. Кратность связи со стороны AnswerOption — 1, со стороны UserAnswer — 1..n.
Рисунок 2 – классы-сущности и отношения между ними
