Skip to content

Latest commit

 

History

History
72 lines (49 loc) · 7.93 KB

README.md

File metadata and controls

72 lines (49 loc) · 7.93 KB

15. Домашнее задание к занятию "Collections Framework. CRUD и тестирование систем, управляющих набором объектов"

Цель задания

  1. Научиться использовать коллекции для работы с наборами элементов

Инструкция к заданию

  1. Скачайте и установите профессиональный редактор кода Intellij Idea Community Version
  2. Откройте IDEA и создайте и настройте новый Maven-проект (под каждую задачу следует создавать отдельный проект, если обратное не сказано в условии)
  3. Создайте пустой репозиторий на GitHub и свяжите его с папкой вашего проекта (не с какой-либо другой папкой).
  4. Правильно настройте репозиторий в плане .gitignore. Проигнорируйте папки .idea и target (раньше была out) и .iml-файл - их в репозитории быть не должно.
  5. Закоммитьте и запушьте созданный проект на гитхаб, настройте Github Actions, сделайте git pull.
  6. Выполните в IDEA требуемую задачу согласно условию.
  7. Проверьте соблюдение правил форматирования кода
  8. Убедитесь что при запуске mvn clean verify (раньше было mvn clean test) все тесты запускаются, проходят, а сборка завершается успешно
  9. Закоммитьте и отправьте в репозиторий содержимое папки проекта.
  10. Убедитесь, что CI запустился на последнем коммите и завершился успешно (зелёная галочка).

Материалы, которые пригодятся для выполнения задания

  1. Как создать Maven-проект в IDEA?
  2. Как отформатировать код в Java?
  3. Как настроить CI на основе Github Actions?

Задание 1 (обязательное)

Ваша задача — разработать класс, управляющий турниром игроков. Каждый игрок описывается дата-классом Player с полями id, name, strength (сила).

Сам же турнир описывается классом Game с методами:

  • register (Player player) — метод регистрации игрока, если игрок не зарегистрирован, то он не сможет играть в турнире. Вам нужно хранить всех зарегистрированных игроков в поле класса Game в виде списка.
  • round (String playerName1, String playerName2) — метод соревнования между двумя игроками. Если хотя бы один из игроков не зарегистрирован, должно выкинуться исключение NotRegisteredException — сами создайте его класс. Обратите внимание, что игроки передаются методу через имя — полную информацию об игроке нужно будет найти в коллекции зарегистрированных игроков (см. аналог в виде findById из прошлых домашних заданий). Выигрывает тот игрок, у которого больше strength (сила), если сила одинаковая, то будет ничья. Метод должен возвращать одно число — 0 в случае ничьи, 1 в случае победы первого игрока и 2 в случае победы второго игрока.

Напишите на класс Game тесты, покрыв по бранчам на 100%.

Итого: отправьте на проверку ссылку на репозиторий GitHub с вашим проектом.


Задание 2 (НЕобязательное)

Отведите ветку fast в репозитории прошлой задачи и выполняйте эту задачу в ней. Доработайте прошлую задачу, заменив коллекцию списка игроков на мапу (HashMap) для быстрого поиска информации об игроке по его имени. Создайте Pull Request этой ветки к основной, но не применяйте его. Убедитесь, что все тесты проходят, CI работает на вашей ветке.


Правила приема работы

Прикреплена ссылка на публичный репозиторий с решением задачи


Критерии оценки

  1. В каждом репозитории размещено содержимое папки проекта IDEA. Корнем репозитория должна именно папка проекта - не папка src, не папка внутри которой лежит папка проекта; т.о. в корне репозитория должна лежать сразу папка src.
  2. Есть файл .gitignore, игнорирующий ненужные файлы и папки, которые должны отсутствовать в репозитории. Если они присутствуют - их нужно оттуда удалить.
  3. Программа соответствует всем требованиям из условия задачи
  4. Программа использует только те инструменты языка, которые мы проходили или которые прямо разрешены условием задачи
  5. Программа работает правильно на всех примерах из условия
  6. Программный код отформатирован и соответствует пройденным требованиям к качеству кода
  7. При запуске mvn clean verify тесты запускаются и проходят, а сборка завершается успешно
  8. В репозитории настроен CI на основе Github Actions и он успешно прошёл на последнем коммите
  9. Программа спроектирована достаточно логично и правильно, не противоречит общепринятым в производстве практикам и традициям
  10. При наличии недочётов, в зависимости от их серьёзности и количества, работа может быть отправлена на доработку или принята; решение принимается на основе экспертной оценки работы.