Авторы: Мария @webstalt, Антон @bacravaj
Реализована регистрация пользователей и вход по логину-паролю.
Настроена отправка
- личных сообщений,
- сообщений в беседы из нескольких юзеров,
- сообщений всем участникам.
Личные сообщения реализованы так: поиск по логину для того, чтобы написать, переход в переписку, отображение непрочитанных сообщений, отправка сообщения.
Для отправки всем юзерам сообщения отправляются с ключом, к которому у любого пользователя есть доступ по умолчанию. Для отправки в беседу сообщение содержит ключ-id беседы.
Программа реализована в режиме запрос-ответ, и на каждом шаге отображается "помощь" в навигации - выведен список команд, который запускает дальнейшие шаги в приложении.
User - класс для описания каждого юзера, возможно установить и изменить, отобразить имя, логин и пароль. location: ./user/User
UserBase - класс на основе паттерна синглтон для хранения данных о пользователях и обращения к ним. location: ./user/UserBase
ConversationBase - класс на основе паттерна синглтон, хранит базу сообщений, методы для добавления нового сообщения, чтения, подсчета количества. База данных выполнена с помощью функции map, с помощью этого метода мы можем быстро находить беседу по ключу. location: ./conversation/ConversationBase
ChatEngine - класс на основе паттернов singlton и state. Это движок для запуска приложения, выполняющий работу со всеми вышеперечисленными классами. Основное состояние движка (текущая страница приложения) хранится в _curent_state, и все методы для перехода по страницам вызывают сеттер нового состояния. location: ./engine/ChatEngine. Схема переходов между состояниями и их примерный функционал изображены на рисунке снизу (извините за качество).

ConversationKey - класс содержит уникальные ключи для хранения в базе сообщений. location: ./conversation/ConversationKey
Более подробные описания находятся в хедерах соответствующих файлов. В файле example.txt находится пример порядка команд для возможности тестирования функционала программы (интерфейс пытались сделать понятным, так что можно по программе погуять и самому).
P.S. пожалуйста, не создавайте пользователей с какими либо пустыми полями; скорее всего у вас не получится, но программа может и упасть)
Мария: ответственна за классы User, UserBase,
Антон: ответственнен за классы ConversationBase, ConversationKey и тестирование функционала,
Cовместная работа: ChatEngine.
Созванивались по два раза в неделю для продумывания концепции, решения вопросов и проблем, шаринга знаний и работы в режиме парного программирования.