Подключите нашего Telegram-бота для уведомлений о новых проектах

Заказ закрыт
RxJava, реализация аналогичной RxJava-библиотеки

Разместить заказ
s
Заказчик
Отзывы фрилансеров: + 0 - 0
Зарегистрирован на сайте 1 месяц
Бюджет: по договоренности
Основные требования

Вам необходимо реализовать собственную версию библиотеки RxJava, используя основные концепции реактивного программирования. Проект должен включать базовые компоненты реактивного потока, поддерживать асинхронное выполнение, обработку ошибок и предоставлять операторы преобразования данных.

Цель работы — создать систему реактивных потоков с возможностью управления потоками выполнения (Schedulers) и обработки событий с использованием паттерна «Наблюдатель» (Observer pattern).

Блоки заданий

1. Реализация базовых компонентов

Что нужно сделать:

    Реализовать интерфейс Observer с методами:
        onNext(T item) — получает элементы потока.
        onError(Throwable t) — обрабатывает ошибки.
        onComplete() — вызывается при завершении потока.
    Реализовать класс Observable с поддержкой подписки (subscribe).
    Реализовать статический метод create(), позволяющий создавать объекты Observable.

Ключевые моменты:

    Соответствие реализации требованиям.
    Работоспособность базовых компонентов.
    Читаемость и структурированность кода.

2. Операторы преобразования данных

Что нужно сделать:

    Реализовать оператор map(Function mapper), который преобразует поток данных.
    Реализовать оператор filter(Predicate predicate), который отфильтровывает ненужные элементы.

Ключевые моменты:

    Корректная работа операторов.
    Наличие тестов и демонстрация функционала.
    Читаемость кода.

3. Управление потоками выполнения

Что нужно сделать:

    Реализовать интерфейс Scheduler с методом execute(Runnable task).
    Создать три варианта Scheduler:
        IOThreadScheduler (аналог Schedulers.io(), использующий CachedThreadPool).
        ComputationScheduler (аналог Schedulers.computation(), использующий FixedThreadPool).
        SingleThreadScheduler (аналог Schedulers.single(), использующий один поток).
    Реализовать методы subscribeOn(Scheduler scheduler), чтобы подписка выполнялась в заданном потоке, и observeOn(Scheduler scheduler), чтобы обработка элементов происходила в нужном потоке.

Ключевые моменты:

    Корректная реализация и работа интерфейса Scheduler.
    Правильное функционирование методов subscribeOn() и observeOn().
    Читаемость кода.

4. Дополнительные операторы и управление подписками

Что нужно сделать:

    Реализовать оператор flatMap(Function<t, observable<r="">> mapper)</t,>, который преобразует элементы в новый Observable.
    Реализовать интерфейс Disposable, позволяющий отменять подписку.
    Добавить обработку ошибок с возможностью передачи их в метод onError().

Ключевые моменты:

    Работоспособность оператора flatMap().
    Реализация механизма отмены подписки через Disposable.
    Корректность обработки ошибок.

5. Тестирование

Что нужно сделать:

    Написать юнит-тесты для всех ключевых компонентов системы.
    Проверить корректность обработки ошибок.
    Проверить работу Schedulers в многопоточной среде.
    Проверить работу операторов map, filter, flatMap.

Ключевые моменты:

    Полное покрытие тестами основных сценариев.
    Читаемость и структурированность тестов.

6. Отчет

Что нужно сделать:

    Подробно описать архитектуру реализованной системы.
    Разъяснить принципы работы Schedulers, их различия и области применения.
    Описать процесс тестирования и основные сценарии.
    Привести примеры использования реализованной библиотеки.

Ключевые моменты:

    Четкое объяснение принципов работы Schedulers и их применения.
    Полное описание архитектуры системы и реализованных операторов.
    Обзор процесса тестирования.

Формат сдачи работы

В результате у вас должны получиться:

    код реализации RxJava в соответствии с заданием;
    отчет;
    файл с Unit-тестами.
Разделы:
Опубликован:
12.05.2025 | 21:51 [поднят: 12.05.2025 | 21:51]
Заказ находится в архиве
Откликнуться Посмотреть другие заказы

Теги: написать программу, создать программу, разработать программу, разработчики программ, прикладной программист

Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».