- Poster.java - класс-менеджер.
- PosterTest.java - автотесты.
Ветка main с проектом.
- PosterRepository.java - класс-репозиторий.
- Film.java - описывающий объект "фильм".
- PosterManager.java - класс-менеджер.
- PosterManagerTest.java - автотесты с Mockito.
- PosterRepositoryTest.java - автотесты.
Ветка layers с проектом.
- Создан Maven проект с и настроен pom.xml c зависимостями и плагинами:
- JunitJupier.
- Lombok.
- Jacoco.
- Настроен maven.yml для Github Ci c verify-сборкой.
- Реализован класс Poster.java с методами взаимодействия со строчными массивами.
- Реализован класс с тестами PosterTest.java.
- Создана ветка layers из ветки main в которой:
- Реализован класс Film.java - описывающий объект "фильм".
- Реализован класс-репозиторий PosterRepository.java, имеющий методы сохранения, удаления, поиска экземпляров Film.
- Реализован класс PosterManager.java, объединяющий логику классов Film.java, PosterRepository.java.
- Реализован класс с автотестами PosterRepositoryTest.java, проверяющий класс PosterRepository.java.
- Реализован класс с автотестами PosterManagerTest.java, проверяющий класс PosterManager.java, с применением Mockito.
Вам необходимо реализовать менеджер афиши для фильмов. В качестве объекта фильма можно взять объект строки — название фильма — или создать свой дата-класс.
Менеджер должен уметь выполнять следующие операции:
- Добавление нового фильма.
- Вывод всех фильмов в порядке добавления (
findAll
). - Вывод максимального лимита* последних добавленных фильмов в обратном от добавления порядке (
findLast
).
*Сделайте так, чтобы по умолчанию выводилось последние 10 добавленных фильмов, но при создании менеджера можно было указать другое число, чтобы, например, выдавать 5, а не 10. То есть у менеджера должно быть два конструктора: один без параметров, выставляющий лимит менеджера в 10, а другой с параметром, берущий значение лимита для менеджера из параметра конструктора.
В первой задаче создайте новую ветку layers
, в которой разделите менеджера на менеджера и репозиторий.
В репозитории должны быть следующие методы:
findAll
— возвращает массив всех хранящихся в массиве объектов.save
— добавляет объект в массив.findById
— возвращает объект по идентификатору, либоnull
, если такого объекта нет.removeById
— удаляет объект по идентификатору, если объекта нет, то пусть будет исключение, как на лекции.removeAll
* — полностью вычищает репозиторий, для удаления всех элементов достаточно в полеitems
положить пустой массив.
Обеспечьте использование менеджером созданного вами репозитория. Репозиторий должен быть зависимостью для менеджера, то есть задаваться через конструктор и храниться в приватном поле.
Напишите 1–2 автотеста, используя Mockito для организации моков репозитория.