Задача
Имеется некая система, которая обрабатывает авиаперелёты. Перелёт — это перевозка пассажира из одной точки в другую с возможными промежуточными посадками. Т. о. перелёт можно представить как набор из одного или нескольких элементарных перемещений, называемых сегментами.
Сегмент — это атомарная перевозка, которую для простоты будем характеризовать всего двумя атрибутами:
Следует написать небольшой модуль, который будет заниматься фильтрацией набора перелётов согласно различным правилам. Правил фильтрации может быть очень много. Также наборы перелётов могут быть очень большими. Правила могут выбираться и задаваться динамически в зависимости от контекста выполнения операции фильтрации.
Необходимо продумать структуру модуля, создать необходимые классы и интерфейсы. Хорошо, если код покрыт тестами JUnit.
Пользовательский интерфейс не рассматривается. Достаточно вывода информации в консоль. Никаких сторонних библиотек использовать не нужно.
Приложенный файл TestClasses.java содержит упрощённые модельные классы и фабрику для получения тестовых образцов. Весь код необходимо поместить в пакет com.gridnine.testing
Для проверочного запуска должен быть создан публичный класс Main c методом main() Этот метод должен выдать в консоль результаты обработки тестового набора перелётов. Получить тестовый набор нужно методом FlightBuilder.createFlights()
В main() следует поместить такой проверочный код. Исключить из тестового набора перелёты по следующим правилам (по каждому правилу нужен отдельный вывод списка перелётов):