Tasks for Java training Web
1. Shapes
Четырехугольник. Разработать классы Точка и Четырехугольник. Создать методы и тесты:
- вычисления площади и периметра фигуры;
- составляют ли точки четырехугольник(не лежат ли три точки на одной прямой);
- является ли четырехугольник выпуклым;
- является ли четырехугольник квадратом, ромбом, трапецией.
- Площади, Объемы, Периметры фигур должны храниться в объекте класса-Warehouse.
- Любое изменение параметра фигуры должно вызывать пересчет соответствующих значений в классе- Warehouse.
- Для решения данной задачи использовать паттерны Observer и Singleton.
- Все созданные объекты геометрических фигур сохранить в объекте-репозитории.
- Используя шаблон Repository, разработать спецификации по добавлению, удалению и изменению объектов репозитория.
- Разработать спецификации по поиску объектов и групп объектов в репозитории. По ID, по имени, по координатам (например: найти все объекты точки которых находятся в первом квадранте, найти все объекты площади поверхности (объемы, периметры) которых заключены в заданный диапазон, найти объекты находящиеся на расстоянии в заданном диапазоне от начала координат)
- Разработать методы сортировки наборов объектов по ID, по имени, по координатам Х первой точки, по координатам Y первой точки и т д. Использовать интерфейс Comparator.
2. Information handling
- Отсортировать абзацы по количеству предложений.
- Отсортировать слова в предложении по длине.
- Отсортировать предложения в абзаце по количеству слов.
- Отсортировать лексемы в предложении по убыванию количества вхождений заданного символа, а в случае равенства – по алфавиту.
- Разобранный текст должен быть представлен в виде объекта, содержащего, например, абзацы, предложения, лексемы, слова, выражения, символы. Лексема – часть текста, ограниченная пробельными символами. Для организации структуры данных использовать паттерн Composite.
- Разобранный текст необходимо восстановить в первоначальном виде. Для деления текста на составляющие следует использовать регулярные выражения.
- Код, выполняющий разбиение текста на составляющие части, следует оформить в виде классов-парсеров с использованием паттерна Chain of Responsibility. При разработке парсеров, разбирающих текст, необходимо следить количеством создаваемых объектов-парсеров. Их не должно быть слишком много.
3. XML, XSD, Parsing
- XML parser Students
4. Multithreading
- Кальянная. Доступны несколько кальянов. Несколько посетителей (группа друзей) могут использовать один кальян. Кальян может использоваться одним посетителем. Группы друзей и одиночные посетители кому кальян не достался ожидают в очереди внутри помещения, а при недостатке мест, вне его.
- Разработать многопоточное приложение, использующее разделяемые ресурсы. Любая сущность, желающая получить доступ к разделяемому ресурсу, должна быть потоком.