|
1 |
| -# java-kanban: Спринт 8. Создание API. http сервер |
| 1 | +# Трекер задач |
2 | 2 |
|
| 3 | +### Описание функционала программы |
| 4 | + |
| 5 | +Приложение для организации совместной работы над задачами. Программа позволяет выполнять CRUD-операции над задачами. |
| 6 | +Сами задачи делятся на разные типы: общие, подзадачи и эпики. Эпики включают в себя подзадачи. Функционал программы |
| 7 | +реализован в трех формах: |
| 8 | + |
| 9 | +1) сохранение данных в оперативной памяти на локальной машине, |
| 10 | +2) сохранением данных в файл на локальной машине, |
| 11 | +3) сохранение данных в файл на сервере с использованием клиента. |
| 12 | + |
| 13 | +----- |
| 14 | + |
| 15 | +### 🧩Стек-технологий и опыт разработки (Java Core) 🧩 |
| 16 | + |
| 17 | +В ходе реализации проекта был применен следующий стек технологий: |
| 18 | + |
| 19 | +- Проектирование в стиле ООП: |
| 20 | + - методы и классы |
| 21 | + - инкапсуляция (пакеты, модификаторы доступа, геттеры-сеттеры) |
| 22 | + - наследование, правило DRY, сокрытие полей, переопределение методов, super, this |
| 23 | + - IDEA: автогенерация кода, горячие клавиши, плагины, дебаггер |
| 24 | + - класс Object, метод equals, hashCode, toString |
| 25 | + - code style |
| 26 | +- Области видимости переменных |
| 27 | +- Оператор switch |
| 28 | +- Git: add, commit (хэш, лог, HEAD), status, .gitkeep, .gitignore, conventional commits, log, reset, diff |
| 29 | +- MarkDown for ReadMe |
| 30 | + |
| 31 | + |
| 32 | +- Абстракция и полиморфизм: |
| 33 | + - абстрактные класс и метод |
| 34 | + - интерфейсы |
| 35 | + - виды полиморфизма: классический, ad-hoc (динамический, статический: перегрузка метода), параметрический |
| 36 | +- Модификаторы: static, final |
| 37 | +- Константы |
| 38 | +- Перечисляемый тип Enum |
| 39 | +- Приведение типов: явное, скрытое, instanceof |
| 40 | +- Дженерики, типизированные классы и интерфейсы, границы дженериков |
| 41 | +- Git: branch, checkout, merge, revert |
| 42 | +- Утилитарный класс: фабрика |
| 43 | + |
| 44 | + |
| 45 | +- Алгоритмы: |
| 46 | + - асимптотическая сложность |
| 47 | + - поиск минимума/максимума в массиве (линейный поиск) |
| 48 | + - бинарный поиск |
| 49 | + - сортировка (вставками, поразрядная) |
| 50 | +- Структуры данных: |
| 51 | + - Java Collections Framework: |
| 52 | + - Iterable, Collection, List, Queue, Set |
| 53 | + - Map |
| 54 | + - Comparator, Comparable, сортировка коллекций, String.CASE_INSENSITIVE_ORDER |
| 55 | + - Collections |
| 56 | + |
| 57 | + |
| 58 | +- String: |
| 59 | + - неизменяемость, пул строк, методы, подстроки, сборка-разборка, форматирование |
| 60 | +- StringBuilder |
| 61 | +- Регулярные выражения |
| 62 | +- Исключения: |
| 63 | + - иерархия, стек-трейс, throw, throws |
| 64 | + - обработка исключений (try-catch-finally) |
| 65 | +- Работа с файлами: |
| 66 | + - File, Files, Path, Paths |
| 67 | + - Streams: байтовые - InputStream, OutputStream; символьные - Reader, Writer; буферизация |
| 68 | + - try-with-resources |
| 69 | + - кодировки, Юникод, Charset, StandardCharsets |
| 70 | +- Ключевые и зарезервированные слова |
| 71 | + |
| 72 | + |
| 73 | +- Функциональный стиль программирования: анонимные классы |
| 74 | +- Функциональные интерфейсы: Consumer, Supplier, Predicate, Function, UnaryOperator |
| 75 | +- Лямбда-выражение, замыкание, ссылка на метод, класс Optional |
| 76 | +- Дженерик-интерфейс Stream, промежуточные и терминальные операции |
| 77 | +- Время и дата: unix-время, класс Instant |
| 78 | +- LocalDateTime, LocalDate, LocalTime, DateTimeFormatter |
| 79 | +- Period, Duration, TemporalAmount |
| 80 | +- ZoneId (фиксированное смещение, привязка к региону), ZonedDateTime |
| 81 | +- Функциональное тестирование: классы эквивалентности, граничные значения, покрытие кода и требований |
| 82 | +- JUnit Test Framework |
| 83 | + |
| 84 | + |
| 85 | +- Интернет. Модель клиент-сервер. Сетевые протоколы (IP, TCP, HTTP) |
| 86 | +- URL-адрес, URL-кодирование, HTML, HTTP-сообщение (стартовая строка, методы, код ответа, заголовки, тело) |
| 87 | +- URI, параметры пути, параметры строки запроса |
| 88 | +- Инструменты разработчика в браузере (на примере Google Chrome) |
| 89 | +- Веб-сервис и WEB API |
| 90 | +- Формат данных JSON, класс POJO |
| 91 | +- Эндпоинты, сетевой пакет, номер порта, сокет |
| 92 | +- HttpServer, InetSockerAddress, HttpHandler, HttpExchange, Headers |
| 93 | +- GSON (JsonArray, JsonElement, JsonObject,JsonParser), сериализация, десериализация |
| 94 | +- GsonBuilder, TypeAdapter, JsonWriter, JsonReader |
| 95 | +- Приложение Insomnia для тестирования API |
| 96 | +- HttpClient, HttpRequest, HttpResponse, BodyHandler |
| 97 | +- Обработка ошибок HTTP-запросов (IOException, InterruptedException, IllegalArgumentException) |
| 98 | + |
| 99 | + |
| 100 | +### Системные требования |
| 101 | + |
| 102 | +В данном репозитории представлен каркас приложения (без основного класса c методом main). Работоспособность приложения |
| 103 | +протестирована, тесты расположены в папке [test](./tests). |
| 104 | + |
| 105 | +Приложение работает корректно в текущем виде при наличии: |
| 106 | + |
| 107 | +- установленный [JDK версии 11](https://docs.aws.amazon.com/corretto/), |
| 108 | +- установленная среда разработки [IntelliJ IDEA](https://www.jetbrains.com/ru-ru/idea/download), |
| 109 | +- установленная библиотека [JUnit версии 5](https://github.com/PraktikumJava/m1-t23-junit/tree/master/lib), |
| 110 | +- установленная библиотека [Gson версии 2.9.0](https://github.com/PraktikumJava/m1-t25-api/tree/master/lib), |
| 111 | + |
| 112 | +-------- |
0 commit comments