Скачиваний:
0
Добавлен:
07.06.2026
Размер:
1.15 Mб
Скачать
  1. Создание диаграммы классов для сценария «Пройти тест по теме» прецедента «Оценка знаний обучающегося»

Рассматриваемый сценарий состоит из:

  1. Теста, который пользователь должен пройти;

  2. Вопросов, входящих в тест;

  3. Вариантов ответов на каждый вопрос;

  4. Пользователя, проходящего тестирование;

  5. Ответов пользователя, которые сохраняются и анализируются системой.

Создаются такие классы-сущности, как: 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 – классы-сущности и отношения между ними