Files
aston-team-project/TASK.ru.md
T

48 lines
4.6 KiB
Markdown

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