4.6 KiB
Задание
Требуемые условия завершения
Основное задание
Написать приложение, которое будет реализовывать алгоритм сортировки выбранных классов. Приложение должно быть выложено на гитхаб/гитлаб, количество веток с кодом должно соответствовать количеству участников (минимум), все ветки в итоге должны быть смерджены в master/main ветку. Вся архитектура и код стайл должны соответствовать конвенциям языка Java. Программа должна выполняться в цикле. Выход из цикла возможен только путем соответствующего выбора пользователя. Пользователь должен иметь возможность выбирать варианты заполнения исходного массива данных (из файла, рандом, вручную) и его длину.
В программе должен использовать паттерн стратегия. Сортировать необходимо кастомные классы - класс должен иметь реализованный паттерн Builder. Для вводимых данных (в тч из файла) должна производиться валидация данных.
Сортировка должна быть базово реализована по всем 3 полям.
Примеры классов
- Автобус (Номер, Модель, Пробег)
- Пользователь (Имя, Пароль, Почта),
- Студент (Номер группы, Средний балл, Номер зачетной книжки)
- Автомобиль (Мощность, Модель, Год производства)
- Бочка (Объем, Хранимый материал, Материал из которого изготовлена)
Классы могут быть любыми, в том числе те, что перечислены здесь. Выбрать необходимо 1 класс.
Дополнительное задание 1
Дополнительно к основным сортировкам реализовать эти же алгоритмы сортировки таким образом, что объекты классов будут сортироваться по какому-либо числовому полю: объекты с четными значениями этого поля должны быть отсортированы в натуральном порядке, а с нечетными – оставаться на исходных позициях.
Дополнительное задание 2
Реализовать функционал для записи отсортированных коллекций/ найденных значений в файл в режиме добавления данных.
Дополнительное задание 3
Заполнение коллекций должно осуществляться посредством стримов.
3* Коллекции для заполнения должны быть кастомными.
Дополнительное задание 4
Реализовать многопоточный метод, подсчитывающий количество вхождений элемента N в коллекцию и выводящий результат в консоль.
Общее требование
Все классы должны базово реализовывать сортировку по всем 3 полям. Для кастомной сортировки разрешено использовать компаратор. Запрещено применять готовые реализации сортировки, поиска и паттернов.
В программе также должны быть реализованы тесты к написанному коду. Классические тестовые библиотеки использовать не обязательно (но можно), так как мы их не изучали, достаточно просто тестов в отдельных классах, реализованных руками.
Результат прикрепить в виде ссылки на Github/Gitlab.