Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Индивидуальное домашнее задание.pdf
Скачиваний:
2
Добавлен:
19.06.2023
Размер:
3.27 Mб
Скачать

2.3.2. Диаграмма классов

Описание диаграммы классов: в данном проекте основными классами являются классы User и Room, а также более мелкие, но не менее важные классы

Invite, Request и Message.

Класс User описывает пользователей системы. За каждым пользователем закреплены его идентификатор в системе (id); имя (name); SHA256-хеш пароля (password); электронная почта (mail); флаг, определяющий, подтверждена ли почта пользователя (isMailConfirmed); список приглашений в комнаты (invites); флаги, показывающие включены или выключены микрофон и видео пользователя (isMicOn, isCamOn). Для данного класса доступны методы получения идентификатора пользователя getId(), электронной почты пользователя getMail(), метод для изменения адреса электронной почты setMail(String address), методы для получения и изменения имени пользователя: getName(), setName(String newName) — и пароля: getPassword(), setPassword(String hashedPassword) — методы получения информации о том, что почта подтверждена isMailConfirmed(), подтверждения почты confirmMail(), метод для получения списка приглашений getInvites() и методы для проверки включены ли микрофон и камера у пользователя isMicOn(), isCamOn().

Следующий класс Room необходим для описания комнат, к которым имеют возможность подключаться пользователи (User). Данный класс хранит в себе идентификатор комнаты (id); её название (name); описание (description); идентификатор владельца (ownerId); список участников (members); список сообщений (messages); список запросов на вход в комнату (requests); ограниченность входа (restrictionType) и SHA256-хэш пароля для комнат с ограничением входа по паролю (password). Методы данного класса позволяют получить идентификатор комнаты getId(), а также получить и изменить владельца комнаты getOwner(), setOwner(int newOwnerId), названия комнаты getName(), setName(String newName), описание комнаты getDescription(), setDescription(String newName), получить список участников getMembers(),

сообщений getMessages() и запросов на вход getRequests(), получить и изменить

26

ограниченность входа getRestrictionType(), setRestrictionType(RestrictionType type).

Класс Message описывает текстовое сообщение, отправленное участником комнаты. В данном классе хранится идентификатор сообщения (id), отправитель (user), содержание (content), временные метки отправления (sentTimestamp) и последнего изменения (editedTimestamp). Методы этого класса позволяют получать getContent() и изменять setContent(String content) содержание сообщения, а также получать отправителя getUser() и временные метки отправление и изменения getSentTimestamp(), getEditedTimestamp().

Класс Invite представляет собой запрос на приглашения пользователя в комнату и имеет следующие поля: идентификатор приглашения (id); комната, в которую приглашают пользователя (room). Методы этого класса позволяют получать идентификатор приглашения getId(), комнату getRoom().

Последний класс Request подобен классу Invite и содержит идентификатор запроса (id) и комнаты (room). Методы данного класса позволяют получать идентификатор приглашения getId() и комнаты getRoom().

Между классами Room и User отношение агрегация «один ко многим», так как конкретный пользователь может находиться только в одной комнате, а комната может включать в себя сколько угодно участников, но не меньше одного. В то же время выход пользователя из комнаты на комнату не влияет, как и удаление комнаты не влияет на пользователей.

Между классами Room и Message отношение композиции «один ко многим», так как в конкретной комнате может содержаться сколько угодно сообщений, и эти сообщения принадлежат только одной комнате, при удалении которой удаляются все содержащиеся в ней сообщения.

МеждуклассамиRoom иRequest отношениекомпозиции«один кмногим», поскольку к комнате могут прийти запросы от скольких угодно пользователей, а вместе с удалением комнаты удаляются все пришедшие в неё запросы.

27

Между классами User и Invite отношение композиции «один ко многим», так как пользователь может получить приглашения в любое количество комнат, или не получить ни одного.

Между классами Request и User отношение ассоциации «один к одному», поскольку один запрос может содержать только одного отправителя.

Между классами Invite и Room отношение ассоциации «один к одному», поскольку одно приглашение может содержать только одну комнату.

Между классами Message и User отношение ассоциации «один к одному», поскольку одно сообщение может содержать только одного отправителя.

Диаграмма классов представлена на рисунке 3.

28

Рисунок 3. Диаграмма классов.

29

Соседние файлы в предмете Архитектура информационных систем