Нужно написать программу на Java. Подробно задача изложена в приложенном файле "тема".
Критерии предъявляемые к программному решению:
1 Рефакторинг, типичные архитектурные решения и антипаттерны:
1)понятие, методы, паттерны, антипаттерны.
2 Многопоточность в Java:
1)понятие, управление, диспетчеризация потоков;
2)проблемы при работе нескольких потоков с общими данными;
3)блокировки;
4)тупиковые ситуации(дедлоки).
3 Обработка ошибок и исключений. Отладка, тестирование и профилирование:
1)особенности создания классов;
2)виды, понятие, категории, объявление, обработка, типы исключений;
3)переопределение методов и исключений;
4)оценка выражений(утверждение, предложение, разработка, отладка, корректность данных);
5)инварианты, постусловия;
6)точки прерывания;
7)профилирование;
8)критерии оценки качества;
9)сборка мусора, утечка памяти, время исполнения, статистика;
10)тестирование.
4 Работа с консолью и файловой системой:
1)консольный ввод-вывод;
2)форматированный вывод;
3)библиотеки для построения текстового интерфейса.
5 Документирование программ:
1)абстракция, инкапсуляция и пакетирование(анализ, проектирование, упрощение, абстрагирование);
2)повторное использование кода(понятия класса, атрибутов, методов, конструкторов, пакетов, операций, импорта);
3)использование онлайн-документации;
4)использование модификаторов доступа(видимости);
5)JacaDoc-комментарии(виды, javadoc);
6)анализ и проектирование.
6 Понятие ввода-вывода:
1)работа с аргументами;
2)популярные библиотеки commons cli командной строки;
3)системные свойства, использование properties;
4)работа с потоками ввода-вывода, цепочки потоков, обработка потоков;
5)методы inputstream, методы reader;
6)сериализация и десериализация объектов.
7 Коллекции и дженерики:
1)понятие коллекции, особенности поведения и использования коллекций;
2)гетерогенные коллекции;
3)api коллекций;
4)проблемы гетерогенных коллекций; гомогенные коллекции; api generic; понятие итератора.
8 Создание графического интерфейса пользователя:
1)структура swing api; swing-пакеты;
2)интерфейсные элементы и их свойства;
3)контейнеры, компоненты;
4)менеджеры разметки.
9 Проектирование иерархии классов:
1)абстракция, инкапсуляция, наследование, полиморфизм, создание подклассов, одиночное наследование;
2)перегрузка, вызов и переопределение методов;
3)гомогенные и гетерогенные коллекции;
4)конструктор(по умолчанию, наследование, перегрузка...);
5)создание и инициализация объектов;
6)графическое моделирование(виды, диаграммы, кодогенерация).