{"id":26646043,"url":"https://github.com/hedmor/eltexschool","last_synced_at":"2025-07-29T05:02:57.080Z","repository":{"id":140405639,"uuid":"194812280","full_name":"Hedmor/EltexSchool","owner":"Hedmor","description":"Задания выполняемые в летней школе Eltex.","archived":false,"fork":false,"pushed_at":"2020-06-04T06:31:20.000Z","size":225,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T11:48:47.914Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hedmor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-02T07:33:24.000Z","updated_at":"2019-08-27T12:19:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"80249dda-94e5-4b21-9231-d5435f950304","html_url":"https://github.com/Hedmor/EltexSchool","commit_stats":null,"previous_names":["hedmor/eltexschool"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedmor%2FEltexSchool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedmor%2FEltexSchool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedmor%2FEltexSchool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedmor%2FEltexSchool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hedmor","download_url":"https://codeload.github.com/Hedmor/EltexSchool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245366198,"owners_count":20603439,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-24T22:56:15.068Z","updated_at":"2025-03-24T22:56:15.564Z","avatar_url":"https://github.com/Hedmor.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EltexSchool\n## Задания выполняемые в летней школе Eltex.\n\n---------------------------------------------------------------------\n### 1. Основы программирования на Java. Создание простейших приложений.\n---------------------------------------------------------------------\n#### ОСНОВНЫЕ ЗАДАЧИ:\n1. Разработать простое консольное приложение. \n2. Сформировать иерархии классов и интерфейсов, сделать реализацию методов. \n3. Сделать начальный ввод данных при запуске приложения через параметры командной строки:\n\tколичество вводимых объектов;\n\tвид представления. \n\n4. После запуска приложения с клавиатуры вводятся данные объекта и выводятся на консоль.\n5. При запуске приложения в зависимости от вида представления создается класс потомка.\n6. Объекты реализуются через наследование: интерфейс → абстрактный класс → наследники.\nСоздать интерфейс *ICrudAction*, задающий действия над объектом (*create*, *read*, *update*, *delete*):\n  - *create* – заполнение объекта случайными значениями и инкремент счётчика.\n  - *read* – вывод данных на экран.\n  - *update* – ввод данных с клавиатуры.\n  - *delete* – принудительное зануление данных в объекте и декремент счетчика.\nСоздать иерархию классов, определяющих объекты по варианту и реализующих интерфейс IcrudAction.\n\n7. Сделать счётчик объектов в базовом абстрактном классе.\n8. Сделать ID объекта в базовом абстрактном классе. \nID инициализируется в конструкторе объекта. Используйте класс UUID. \n9. Сделать перегрузку конструкторов в классах-наследниках.\n\n\u003e Класс для тестирования находится: ru.eltex.app.java.model.test.lab1.Main\n\n##### Вариант базы данных:\n\nСписок объектов продажи элетроники 3-х видов: телефоны, сматфоны и планшеты.\n\n Поля базового класса: | \n------------ | \nID товара | \n Цена |\n Счётчик товаров |\n Фирма |\n Модель |\n ОС |\n\nПоля для телефонов: | Поля для сматфонов: | Поля для планшетов: | \n------------ | ------------ | ------------ | \n Тип корпуса (*классический*, *раскладушка*) |  Тип SIM-карты (*micro-SIM*, *обычная*) | Видеопроцессор | \n.............................................| Количество SIM-карт |  Разрешение экрана |\n\n\n\u003e Класс для тестирования находится: ru.eltex.app.java.model.test.lab1.Main\n---------------------------------------------------------------------\n### 2. Классы-коллекции.\n---------------------------------------------------------------------\n#### ОСНОВНЫЕ ЗАДАЧИ:\n1. Изучить особенности реализации классов-коллекций в Java.\n2. Доработать программу, разработанную ранее.\n3. Разработать класс для хранения и обработки персональных данных пользователей  Credentials (Поля: *ID*, *Фамилия*, *Имя*, *Отчество*, *e-mail*).\n4. Разработать класс-коллекцию «корзину» (*ShoppingCart*) для сгенерированных объектов по варианту. \nПри операции *add* происходит добавление объекта в «корзину». \nПри операции *delеte* происходит удаление объекта из «корзины».\n5. Разработать класс «заказ» (*Order*).  \n6. Добавить для класса «заказ» поле «статус заказа» (в ожидании , обработан). \n7. Добавить для класса «заказ» поля «время создания» и «время ожидания».\nВремя создания устанавливается в момент оформления покупки.\nВремя ожидания – время, через которое заказ должен исчезнуть (должен быть обработан), считая от времени создания.  \n8. Разработать класс-коллекцию «заказы» (*Orders*)  для объединения списка заказов. \n9. Для класса «заказы» разработайте функцию «оформить покупку». \nПри выполнении данной функции «корзина» с товарами объединяется в объект «заказ» вместе с данными пользователя и добавляется в класс-коллекцию «заказы».\nРеализовать отношение - агрегация. Агрегация (агрегирование по ссылке) — отношение «часть-целое» между двумя равноправными объектами,\nкогда один объект (контейнер) имеет ссылку на другой объект.\n10. Добавить функцию проверки заказов - обход коллекции и удаление всех объектов, время ожидания которых истекло и статус «обработан».\n11. Для хранения сгенерированных идентификаторов товаров используйте коллекцию, удобную для поиска в соответствии с вашим вариантом.\n12. Добавьте функцию поиска объекта в коллекции «корзина» по идентификатору.\n13. Добавьте в класс-коллекцию «корзина» функцию «показать все объекты».\n14. Добавьте в класс-коллекцию «заказы» функцию «показать все заказы».\n15. Продемонстрировать в программе все новые функции.\n\n##### Вариант задания:\n- Коллекция для хранения объектов в классе «корзина»: *ArrayList*\n- Коллекция для хранения объектов в классе «заказы»: *LinkedList*\n- Коллекция для хранения и поиска уникальных идентификаторов: *HashSet*\n- Коллекция для хранения объектов по времени создания: *HashMap*\n\n\u003e Класс для тестирования находится: ru.eltex.app.java.model.test.lab23.Main\n---------------------------------------------------------------------\n### 3. Generic-классы в Java.\n---------------------------------------------------------------------\n#### ОСНОВНЫЕ ЗАДАЧИ:\n1. Изучить принципы построения классов и методов generic в Java.\n2. Доработать программу, разработанную ранее.\n3. Сделать из класса «корзина» Generic-класс, позволяющий работать с объектами (*добавлять*, *удалять* и т.д.). \nВ качестве параметра класс должен принимать различные объекты (использовать ограничения на тип).\n4. Сделать из класса «заказы» Generic-класс, позволяющий работать с заказами (*добавлять*, *удалять* и т.д.). \n5. Протестируйте на коллекциях разных видов и посмотрите за ошибками компиляции, которые возникают при неправильном использовании *generics*.\n\n\n---------------------------------------------------------------------\n### 4. Многопотоковые приложения.\n---------------------------------------------------------------------\n#### ОСНОВНЫЕ ЗАДАЧИ:\n1. Изучить особенности реализации и работы потоков в Java.\n2. Доработать программу, разработанную ранее.\n3. Создать абстрактный класс *ACheck*, описывающий проверку заказов по статусу.\n4. Реализовать класс *ACheck* для каждого статуса заказа. Оба класса должны быть выполнены в виде отдельных потоков и работать с коллекцией объектов.\nОдин поток с определенным интервалом или по команде с консоли делает проверку коллекции и проверяет заказы по статусу «в ожидании». \nЕсли заказ обнаружен в этом состоянии, то меняется статус заказа на состояние «обработан».\nДругой поток проверяет заказы по статусу «обработан». \nЕсли заказ обнаружен в этом состоянии, заказ удаляется из списка. \n5. Сделать класс автоматической генерации заказов в виде отдельного потока.\nСпроектируйте класс таким образом, чтобы можно было запустить одновременно несколько экземпляров класса с разным интервалом времени.\n6. Продемонстрировать работу классов-потоков.\n\n\u003e Класс для тестирования находится: ru.eltex.app.java.model.test.lab4.Main\n---------------------------------------------------------------------\n### 5. Потоки данных. Работа с локальными файлами.\n---------------------------------------------------------------------\n#### ОСНОВНЫЕ ЗАДАЧИ:\n1. Изучить особенности реализации потоков ввода-вывода в Java.\n2. Доработать программу, разработанную ранее.\n3. Разработать интерфейс *IOrder* (*readById*, *saveById*, *readAll*, *saveAll*) и абстрактный базовый класс AManageOrder для хранения заказов.\n4. Реализовать класс  *ManagerOrderFile* для хранения заказов в виде двоичного файла.\n5. Реализовать класс  *ManagerOrderJSON* для хранения заказов в виде текстового файла в формате JSON.\n\n\u003e Класс для тестирования находится: ru.eltex.app.java.model.test.lab5.Main\n---------------------------------------------------------------------\n### 6. Сетевые приложения «клиент-сервер».\n---------------------------------------------------------------------\n#### ОСНОВНЫЕ ЗАДАЧИ:\n1. Изучить особенности реализации сетевых приложений в Java.\n2. Используя программу, разработанную ранее, разработать клиент-серверное приложение.\n3. Сервер по UDP делает оповещение в локальную сеть, высылая внутри пакета порт на соединение.\n4. Клиент слушает UDP-порт и ждет оповещения.\nПолучив оповещение, клиент извлекает порт и *IP* сервера из пакета и устанавливает соединение по TCP.\nОправляет заказ. Отсоединяется от сервера. \nЖдет оповещения о статусе заказа по *UDP* и генерирует новые заказы при условии получения оповещения.\n5. Сервер, получив заказ, складывает его в очередь заказов.\n6. Организовать на сервере автоматическую обработку заказов, используя наработки из предыдущих лабораторных работ. \nПри изменении на статус «обработан» клиенту по *UDP* высылается оповещение.  \n7. Клиент, получив оповещение о изменении статуса заказа, выводит на консоль время обработки заказа и информацию о заказе.\n8. Сделать возможность одновременной работы нескольких клиентов. \nОповещения можно делать на несколько *UDP* портов. \n\n\u003e Класс для тестирования находится: ru.eltex.app.java.model.test.lab6.Main\n---------------------------------------------------------------------\n### 7. Java EE. Spring Framework.\n---------------------------------------------------------------------\n#### ОСНОВНЫЕ ЗАДАЧИ: \n1. Используя Spring Boot, разработать простое MVC веб-приложение.\n2. Для сборки проекта использовать сборщик maven.\n3. Для логирования операций использовать *Log4j*.\n4. Сделать обработку команды (readAll).\nПри запросе в строке браузера http://localhost:[port]/?command=readall\nвозвращаются все заказы в виде JSON.\n5. Сделать обработку команды (readById).\nПри запросе в строке браузера http://localhost:[port]/?command=readById\u0026order_id=[id]\nвозвращается обратно заказ с идентификатором [id] в виде JSON.\n6. Сделать обработку команды (addToCard).\nПри запросе в строке браузера http://localhost:[port]/?command=addToCard\u0026card_id=[id]\nгенерируется товар и добавляется в корзину с идентификатором [id].\nПользователю возвращается id нового товара.\n7. Сделать обработку команды (delById).\nПри запросе в строке браузера http://localhost:[port]/?command=delById\u0026order_id=[id]\nудаляется заказ с идентификатором [id].\nПользователю возвращается 0 в случае успешного удаления и \u003e1 если была ошибка.\n8. Написать свой класс-обработчик ошибок при удалении.\n(код 1 - нет такого заказа, код 2 - файл поврежден, 3 - неправильная команда).\n\n\u003e Класс для тестирования находится: ru.eltex.app.java.controller.OrdersControllerHakedMVC\n---------------------------------------------------------------------\n### 8. Java EE. Hibernate Framework.\n---------------------------------------------------------------------\n#### ОСНОВНЫЕ ЗАДАЧИ:\n1. Изучить Hibernate Framework.\n2. Установить БД mysql.\n3. Создать таблицы в БД согласно своему варианту.\n4. Реализовать команды из предыдущей лабораторной работы, используя Hibernate Framework \n5. Настройки к БД хранить в Properties File проекта.\n6. Для сборки проекта использовать сборщик gradle.\n\n\n\u003e Класс для тестирования находится: ru.eltex.app.java.controller.OrdersControllerHibernate\n---------------------------------------------------------------------\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhedmor%2Feltexschool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhedmor%2Feltexschool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhedmor%2Feltexschool/lists"}