15. Домашнее задание к занятию "Collections Framework. CRUD и тестирование систем, управляющих набором объектов"
- Научиться использовать коллекции для работы с наборами элементов
- Скачайте и установите профессиональный редактор кода Intellij Idea Community Version
- Откройте IDEA и создайте и настройте новый Maven-проект (под каждую задачу следует создавать отдельный проект, если обратное не сказано в условии)
- Создайте пустой репозиторий на GitHub и свяжите его с папкой вашего проекта (не с какой-либо другой папкой).
- Правильно настройте репозиторий в плане
.gitignore
. Проигнорируйте папки.idea
иtarget
(раньше былаout
) и.iml
-файл - их в репозитории быть не должно. - Закоммитьте и запушьте созданный проект на гитхаб, настройте Github Actions, сделайте
git pull
. - Выполните в IDEA требуемую задачу согласно условию.
- Проверьте соблюдение правил форматирования кода
- Убедитесь что при запуске
mvn clean verify
(раньше былоmvn clean test
) все тесты запускаются, проходят, а сборка завершается успешно - Закоммитьте и отправьте в репозиторий содержимое папки проекта.
- Убедитесь, что CI запустился на последнем коммите и завершился успешно (зелёная галочка).
- Как создать Maven-проект в IDEA?
- Как отформатировать код в Java?
- Как настроить CI на основе Github Actions?
Ваша задача — разработать класс, управляющий турниром игроков. Каждый игрок описывается дата-классом Player
с полями id
, name
, strength
(сила).
Сам же турнир описывается классом Game
с методами:
register (Player player)
— метод регистрации игрока, если игрок не зарегистрирован, то он не сможет играть в турнире. Вам нужно хранить всех зарегистрированных игроков в поле классаGame
в виде списка.round (String playerName1, String playerName2)
— метод соревнования между двумя игроками. Если хотя бы один из игроков не зарегистрирован, должно выкинуться исключениеNotRegisteredException
— сами создайте его класс. Обратите внимание, что игроки передаются методу через имя — полную информацию об игроке нужно будет найти в коллекции зарегистрированных игроков (см. аналог в видеfindById
из прошлых домашних заданий). Выигрывает тот игрок, у которого большеstrength
(сила), если сила одинаковая, то будет ничья. Метод должен возвращать одно число —0
в случае ничьи,1
в случае победы первого игрока и2
в случае победы второго игрока.
Напишите на класс Game
тесты, покрыв по бранчам на 100%.
Итого: отправьте на проверку ссылку на репозиторий GitHub с вашим проектом.
Отведите ветку fast
в репозитории прошлой задачи и выполняйте эту задачу в ней.
Доработайте прошлую задачу, заменив коллекцию списка игроков на мапу (HashMap
) для быстрого поиска информации об игроке по его имени.
Создайте Pull Request этой ветки к основной, но не применяйте его.
Убедитесь, что все тесты проходят, CI работает на вашей ветке.
Прикреплена ссылка на публичный репозиторий с решением задачи
- В каждом репозитории размещено содержимое папки проекта IDEA. Корнем репозитория должна именно папка проекта - не папка
src
, не папка внутри которой лежит папка проекта; т.о. в корне репозитория должна лежать сразу папкаsrc
. - Есть файл
.gitignore
, игнорирующий ненужные файлы и папки, которые должны отсутствовать в репозитории. Если они присутствуют - их нужно оттуда удалить. - Программа соответствует всем требованиям из условия задачи
- Программа использует только те инструменты языка, которые мы проходили или которые прямо разрешены условием задачи
- Программа работает правильно на всех примерах из условия
- Программный код отформатирован и соответствует пройденным требованиям к качеству кода
- При запуске
mvn clean verify
тесты запускаются и проходят, а сборка завершается успешно - В репозитории настроен CI на основе Github Actions и он успешно прошёл на последнем коммите
- Программа спроектирована достаточно логично и правильно, не противоречит общепринятым в производстве практикам и традициям
- При наличии недочётов, в зависимости от их серьёзности и количества, работа может быть отправлена на доработку или принята; решение принимается на основе экспертной оценки работы.