Главная страница
Навигация по странице:

  • Лабораторные работы

  • Для выполнения работы использовать каркас SparkRetrofitExample.

  • Расчетно-графическая работа

  • Зачет

  • РКСП Структура дисциплины 2023. Разработка клиентсерверных приложений. Структура дисциплины (2023)


    Скачать 1.08 Mb.
    НазваниеРазработка клиентсерверных приложений. Структура дисциплины (2023)
    Дата16.03.2023
    Размер1.08 Mb.
    Формат файлаpdf
    Имя файлаРКСП Структура дисциплины 2023.pdf
    ТипЛабораторная работа
    #995441

    1.
    Разработка клиент-серверных приложений. Структура
    дисциплины (2023)
    Рейтинг
    Рейтинг
    Лаб. 1 10
    Разработка классов движущихся объектов
    Лаб. 2 10
    Сетевое соединение на сокетах (TCP)
    Лаб. 3 10
    Передача данных без установления соединения (UDP)
    Лаб. 4 10
    Разработка клиент-серверного приложения на RestAPI в фреймворке Spark-Retrofit
    РГР
    40
    Зачет
    20
    Лабораторные работы
    В качестве примера для лаб.1-3 - 24_MovingObjects_TCP_UDP_2023. Код
    разработки и решения должны быть ОРИГИНАЛЬНЫМИ.
    Лабораторная работа 1. Разработка классов движущихся объектов
    Разработать абстрактный базовый класс графического объекта с данными и функционалом (абстрактными и переопределяемыми методами): координаты центра и размеры охватывающего прямоугольника, цвет, рисование объекта, проверка на принадлежность точки объекту, запись/чтение в различные потоки, а также все остальные, необходимые для реализации функционала в последующих работах.
    Разработать два производных класса (по вариантам). Разработать оконное приложение с созданием и уничтожением объектов по координатам клика мыши.
    Объекты сохраняются в векторе в виде ссылок на базовый класс.
    Варианты заданий
    1. Многоугольник с произвольным количеством вершин, соединенных через одну вершину (типа звезда)
    2. Выпуклый многоугольник с произвольным количеством вершин, соединенных последовательно
    3. Строка текста
    4. Смайлик
    5. Картинка, загружаемая из файла
    6. Вертикальная (горизонтальная) синусоида с изменяющейся начальной фазой
    (один период)
    7. Объект – группа объектов (группировка)
    Реализовать процесс движения объектов (вид движения по вариантам для каждого типа), остановки и возобновления движения по отдельности и всех вместе. Внести в базовый класс функционал движения, в производный – алгоритм движения для конкретного типа.

    2.
    Варианты заданий
    1. Равномерное движение со случайным направлением и скоростью, отскакивание от краев экрана
    2. Ускоренное движение со случайным направлением и скоростью, отскакивание от краев экрана с кратным уменьшением скорости (неупругое столкновение)
    3. Вращение вокруг своей оси
    4. Вращение по окружности со случайным радиусом
    5. Движение по сторонам квадрата
    6. Броуновское движение со случайным изменением значения скорости и направления
    7. Дрожжание – случайные изменения значения скорости и направления с возвратом в среднюю точку (отслеживание среднего значения координат)
    8. Триангулярная пульсация размера фигуры
    9. Синусоидальная пульсация размера фигуры
    10. Триангулярная пульсация по каждой прямоугольной координате в противофазе
    11. Синусоидальная пульсация по каждой прямоугольной координате в противофазе
    12. Триангулярное колебание пульсация по каждой прямоугольной координате в противофазе
    В базовом классе реализовать (объявить) методы (абстрактные) чтения/записи объекта в двоичный и текстовый потоки. Переопределить во всех производных классах.
    В оконном классе реализовать методы сохранения и загрузки вектора объектов в тестовый, двоичный и сериализуемый файл (двоичная сериализация средствами Java и
    XML-сериализация с использованием библиотеки xstream). Формат двоичного и текстового файла содержит начальный счетчик объектов, а затем для каждого их них – имя и содержимое. При загрузке из файла создавать объект файла произвольного класса с помощью средств рефлексии (методы Class.forName и Class.newInstance)
    Лабораторная работа 2. Сетевое соединение на сокетах
    Разработать приложение с клиентской и серверной частью. Серверная часть реализуется в потоке и запускается/останавливается при помощи флажка. Серверная компонента ждет запроса на соединение на фиксированном порте. Клиентская компонента в другой программе запрашивает соединение с серверной. Протокол является симметричным (двунаправленным), т.е. каждое приложение может посылать один тот же набор команд:

    закрытие соединения;

    очистка вектора объектов;

    передача объекта;

    запрос на передачу объекта;

    передача списка имен объектов (в качестве имени можно использовать «подпись» объекта, например в виде – «имя класса,цвет»);

    запрос размера вектора объектов;

    запрос объекта с заданным номером из вектора;

    ответ на запрос размера вектора.

    3.
    Принимаемые объекты отображаются в клиенте и запоминаются в векторе. В протоколе для передачи объектов через соединения использовать методы сериализации из лаб.1.
    Лабораторная работа 3. Передача данных без установления соединения
    Задание в л.р.2 реализовать с использованием класса дейтаграмм протокола UDP без установления соединения (класс DatagramSocket). Флажком выделяется
    «первое/второе» приложение, отличающиеся только номером порта, на котором они прослушивают прием. Например, первое принимает данные на порте 7001, а передает на
    7002, второе – наоборот. Для конвертации XML-строки, содержащей передаваемый объект, в массив байтов для передачи в дейтаграммный сокет использовать классы
    ByteArrayOutputStream/ByteArrayOutputStream в качестве класса-источника текстового потока.
    Лабораторная работа 4. Разработка клиент-серверного приложения на RestAPI в фреймворке Spark-Retrofit
    Для выполнения работы использовать каркас SparkRetrofitExample.
    Разработать серверную компоненту, которая хранит вектор движущихся объектов.
    При завершении работы сохраняет текущий вектор в файл, при перезапуске – восстанавливает. Принимает от клиента команды в формате RestAPI:

    получить список «имен» объектов ;

    получить объект по его индексу в векторе;

    удалить из вектора по индексу;

    получить все объекты;

    добавить объект в вектор;
    Разработать клиентское приложение на основе л.р.1-3, использующее серверное приложение для хранения графических объектов.
    Расчетно-графическая работа
    Необходимо изучить, установить и опробовать один из компонент разработки, используемой при разработке протоколов, распределенных приложений или протокольных клиентов: библиотеку, фреймворк. Содержание работ и отчета
    (пояснительной записки).
    1. Краткое описание функционала, интерфейсов
    2. Аннотированная подборка ссылок по теме:

    официальный сайт;

    cсылки на репозитории исходного кода, maven-репозитории;

    посты в профессиональных сообществах (habrahabr) с учебными материалами и примерами развертывания (использования);

    посты в профессиональных сообществах с обсуждением практики использования, проблем, преимуществ и недостатков.
    3. Сравнительный анализ преимуществ и недостатков с другими функционально подобными библиотеками и феймворками. Определить квалификационные признаки – масштаб, среда (язык) использования, свободное/коммерческое ПО,

    4. распространенность, простота применения, по которым провести сравнение с аналогами.
    4. Создать собственный проект – пример использования, оформить документы: описание ключевых идей, диаграмма классов приложения, описание классов
    (назначение класса, свойства, методы), описание настройки и работы (скриншоты, тесты). Приложение – экранная форма («кабина самолета») с набором элементов для исполнения функционала в любой последовательности.
    Совместно отчетом необходимо сдать исходные коды проектов с примерами, приведенными в отчете.
    Варианты можно выбрать из документа «Список полезных ссылок для Java программиста» - https://yadi.sk/i/AyFzLKgjGvt-FA
    Разделы I-2, III-2,3,4,7,10
    Зачет
    Зачет теоретический в форме ответа на тесты. В билете выдается 10 тестовых вопросов по темам зачета, на каждый дается содержательный письменный ответ – 1-2 абзаца. Вес ответа 0..2 балла.
    Темы зачета
    1. Понятие протокола. Уровни протоколов в открытых системах, их функциональность.
    2. Транспортный протокол TCP. Форматы сообщений, структуры данных, функциональность и алгоритмы передача данных и управления потоком.
    3. Система идентификации соединений в TCP. Статические и динамические порты, сокеты и серверные сокеты. Процедуры установления и разрыва соединения.
    Состояния соединения.
    4. Основные технологические решения в протоколах низких уровней и их использование в прикладном программировании сетевых приложений.
    5. Системы клиент-сервер. Клиент и сервер как программные компоненты и роли.
    Синхронное и асинхронное взаимодействие.
    6. Понятие тонкого и толстого клиента. Слои: представление, контроллер, бизнес-слой,
    DAO. Уровни соединения клиента и сервера в типовом приложении. Прикладной протокол как элемент взаимодействия слоев клиент-серверной архитектуры.
    Проектирование протоколов распределенных систем.
    7. Проектирование протокола. Стратегия взаимодействия клиента с сервером.
    Архитектурные аспекты проектирования протокола. Использование конечных автоматов (диаграмм состояний) в протоколах
    8. Распределенные системы. Службы и симметричные протоколы распределенных систем
    9. Аспекты проектирования протокола. CheckList понимания протокола.
    10. Классы Socket и ServerSocket, установление и разрыв соединения
    11. Протокол HTTP. Класс URLConnection. Реализация webAPI.
    12. Протокол UDP. Класс DatagramSocket
    13. Серверные web-приложения на Java. Сервлеты.
    14. RestAPI. Основные положения. Клиентская библиотека Retrofit.

    5.
    15. Контекст соединения.
    Восстановление соединений.
    Паттерн
    «сессия».
    Взаимодействие клиент-сервер без последействия. Идентификатор сессии (токен)
    Паттерн «сессия», его реализация при восстановлении постоянных соединений и при взаимодействии клиент-сервер без последействия


    написать администратору сайта