Проект по ООП студентов УрФУ
Название проекта: Чат-бот "Матмех"
Участники: Рязанова Яна Андреевна ФТ-202, Бараковский Михаил Сергеевич ФТ-202, Павлов Захар Витальевич ФТ-202, Рогов Артемий Фт-201
Пользователь хочет иметь от этого бота функционал, упрощающий жизнь на матмехе, для этого имеются следующие опции:
- Оповещает о начале занятия за 10 минут (где, когда)
- По просьбе скидывает расписание
- По просьбе возвращает ссылки на учебные чаты (предварительно их нужно будет забить)
- Наличие кнопки «Я в столовой» и остальные пользователи бота увидят, сколько человек в столовой, чтобы оценить свои шансы поесть в большак
Внешный слой (User Interface) — взимодействие с пользователем. Будет класс, который обрабатывает запрос пользователя (разбивает запрос на поля, например метод «дать расписание», ID пользователя — группа) и передаёт дальше. Это будет инфраструктура, которая может быть использована потом в других проектах. Этот слой взаимодействует с Application, чтоб отображать данные на нужной платформе, с Domain, чтобы передавать полученные от пользователя данные, и с Infrastructure, чтобы делать запросы к базе данных.
Application — Интерфейс взаимодействия с разными платформами (Алиса, Телеграм)
Domain — есть интерфейс, который описывает поведение всех «фич», и от которого наследуются классы каждой отдельной «фичи». Каждая фича — отдельный класс (Single Responsibility Principle). Оповещение о начале занятий: не получает никаких данных, отправляет пользователю информацию, основываясь на Базе Данных (делаем запрос к Infrastructure) и текущем времени. Все действия типа «получить команду от пользователя и выдать что-то из Базы Данных» помещаем в один абстрактный класс (Расписание/ссылки на чаты): получаем запрос от пользователя скинуть расписание/ссылку на чат, обращаемся к Infrastructure и выдаём пользователю информацию из БД. Кнопки «Я в столовой»/«Сколько людей в столовой»: вызывается функция «увеличить счётчик» / возвращается счётчик.
Infrastructure — База данных хранит расписание. Должен быть класс, который принимает от внешнего слоя данные, которые ввёл пользователь, и добавляет новое значение в базу данных
-
Разные статусы пользователей
1.1. Интерфейс для студента
1.2. Интерфейс для преподавателя (он сможет скидывать дз учебным группам, которые есть в ботe)
-
Кроссплатформенность
2.1. Интерфейс для телеграма
2.2. Интерфейс для Алисы
-
База данных
3.1. JSON-файл храним в коде проекта
3.2. FireBase от Google