https://github.com/zlatamigas/epam_task3
Epam. Task 3. Information handling. Composite chain.
https://github.com/zlatamigas/epam_task3
chain-of-responsibility-pattern composite-pattern java
Last synced: 3 months ago
JSON representation
Epam. Task 3. Information handling. Composite chain.
- Host: GitHub
- URL: https://github.com/zlatamigas/epam_task3
- Owner: zlatamigas
- Created: 2022-02-28T14:58:15.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-03-14T21:25:53.000Z (over 3 years ago)
- Last Synced: 2025-02-04T14:35:02.931Z (5 months ago)
- Topics: chain-of-responsibility-pattern, composite-pattern, java
- Language: Java
- Homepage:
- Size: 51.8 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Task 3. Information handling. Composite chain.
Cоздать приложение, разбирающее текст из файла и выполняющее с
текстом пять различных операций.## `Требования`
* Разобранный текст должен быть представлен в виде объекта-структуры, содержащего,
например, абзацы, предложения, лексемы, слова, выражения, символы. Лексема –
часть текста, ограниченная пробельными символами. Для организации структуры
данных использовать паттерн Composite.
* Классы с информацией являются классами сущностей и не должны быть перенагружены
методами логики.
* Исходный текст всегда корректный. То есть, все предложения начинаются с заглавной
буквы и завершаются символами «.», «?», «!» или «…». Все абзацы начинаются с символа
табуляции или заданного числа пробелов, например 4 пробела.
* Текст из Composite необходимо восстановить в текстовом виде. Пробелы и знаки
табуляции при разборе могут заменяться одним пробелом.
* Для деления текста на составляющие следует использовать регулярные выражения. Не
забывать, что регулярные выражения для приложения являются литеральными
константами.
* Код, выполняющий разбиение текста на составляющие части, следует оформить в виде
классов-парсеров с использованием паттерна Chain of Responsibility.
* При разработке парсеров, разбирающих текст, необходимо следить за количеством
создаваемых объектов-парсеров. Их не должно быть слишком много.
* Арифметические выражения, встречающиеся в тексте, должны быть вычислены. И в итоговый
текст (структуру данных) должно войти вычисленное значение. Использовать паттерн Interpreter с
применением функциональных интерфейсов.
* Для записи логов использовать Log4J2.
* Созданное приложение должно позволять реализовывать функционал по работе над
текстом (задачи приведены ниже) без “переписывания” существующего кода.
* Код должен быть покрыт тестами.## `Функциональные возможности`
Функциональные возможности, варианты для реализации:1. Отсортировать абзацы по количеству предложений.
2. Найти предложения с самым длинным словом.
3. Удалить из текста все предложения с числом слов меньше заданного.
4. Найти в тексте все одинаковые слова без учета регистра и посчитать их
количество.
5. Подсчитать в предложении число гласных и согласных букв.