Программирование


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

1-й семестр (осень)

Лабораторная работа #1

Написать программу на языке Java, выполняющую соответствующие варианту действия. Программа должна соответствовать следующим требованиям:

  1. Она должна быть упакована в исполняемый jar-архив.
  2. Выражение должно вычисляться в соответствии с правилами вычисления математических выражений (должен соблюдаться порядок выполнения действий и т.д.).
  3. Программа должна использовать математические функции из стандартной библиотеки Java.
  4. Результат вычисления выражения должен быть выведен в стандартный поток вывода в заданном формате.

Выполнение программы необходимо продемонстрировать на сервере helios.

Отчёт по лабораторной работе должен содержать:
  1. Текст задания.
  2. Исходный код программы.
  3. Результат работы программы.
  4. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Язык Java. Особенности языка.
  2. Средства разработки. JDK и JRE.
  3. Математические выражения в Java. Особенности вычисления, приоритеты операций.
  4. Математические функции в составе стандартной библиотеки Java. Пакет java.lang.math.
  5. Стандартный поток вывода в программах на Java. Форматированный вывод.

Лабораторная работа #2

На основе базового класса Pokemon написать свои классы для заданных видов покемонов. Каждый вид покемона должен иметь один или два типа и стандартные базовые характеристики:

  • очки здоровья (HP)
  • атака (attack)
  • защита (defense)
  • специальная атака (special attack)
  • специальная защита (special defense)
  • скорость (speed)

Классы покемонов должны наследоваться в соответствии с цепочкой эволюции покемонов. На основе базовых классов PhysicalMove, SpecialMove и StatusMove реализовать свои классы для заданных видов атак.

Атака должна иметь стандартные тип, силу (power) и точность (accuracy). Должны быть реализованы стандартные эффекты атаки. Назначить каждому виду покемонов атаки в соответствии с вариантом. Уровень покемона выбирается минимально необходимым для всех реализованных атак.

Используя класс симуляции боя Battle, создать 2 команды покемонов (каждый покемон должен иметь имя) и запустить бой.

Базовые классы и симулятор сражения находятся в jar-архиве. Документация в формате javadoc - в zip-архиве.

Информацию о покемонах, цепочках эволюции и атаках можно найти на сайтах http://poke-universe.ru, http://pokemondb.net, http://veekun.com/dex/pokemon

Чтобы познакомиться со своими покемонами, введите номер варианта.
Отчёт по работе должен содержать:
  1. Текст задания.
  2. Диаграмма классов реализованной объектной модели.
  3. Исходный код программы.
  4. Результат работы программы.
  5. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Объектно-ориентированное программирование. Основные понятия: объекты, наследование, полиморфизм, инкапсуляция.
  2. Понятие класса. Классы и объекты в Java.
  3. Члены класса. Модификаторы доступа.
  4. Создание и инициализация объектов. Вызов методов.
  5. Области видимости переменных.
  6. Модификаторы final и static.
  7. Пакеты, инструкция import.

Лабораторная работа #3

Доработать программу из лабораторной работы #2, добавив реализацию обновлённой версии объектной модели.

Чтобы увидеть описание объектной модели, введите свой номер варианта.

Программа должна удовлетворять следующим требованиям:

  1. Доработанная модель должна соответствовать принципам SOLID.
  2. Программа должна содержать как минимум два интерфейса и один абстрактный класс (номенклатура должна быть согласована с преподавателем).
  3. В разработанных классах должны быть переопределены методы equals(), toString() и hashCode().
  4. Программа должна содержать как минимум один перечисляемый тип (enum).

Порядок выполнения работы:

  1. Доработать объектную модель приложения.
  2. Перерисовать диаграмму классов в соответствии с внесёнными в модель изменениями.
  3. Согласовать с преподавателем изменения, внесённые в модель.
  4. Модифицировать программу в соответствии с внесёнными в модель изменениями.

Отчёт по работе должен содержать:

  1. Текст задания.
  2. Диаграмма классов объектной модели.
  3. Исходный код программы.
  4. Результат работы программы.
  5. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Принципы объектно-ориентированного программирования SOLID и STUPID.
  2. Класс Object. Реализация его методов по умолчанию.
  3. Особенности реализации наследования в Java. Простое и множественное наследование.
  4. Понятие абстрактного класса. Модификатор abstract.
  5. Понятие интерфейса. Реализация интерфейсов в Java, методы по умолчанию. Отличия от абстрактных классов.
  6. Перечисляемый тип данных (enum) в Java. Особенности реализации и использования.
  7. Методы и поля с модификаторами static и final.
  8. Перегрузка и переопределение методов. Коварианты возвращаемых типов данных.
  9. Элементы функционального программирования в синтаксисе Java. Функциональные интерфейсы, лямбда-выражения. Ссылки на методы.

Лабораторная работа #4

Доработать программу из лабораторной работы #3, обновив реализацию объектной модели в соответствии с новой версией описания предметной области.

Чтобы увидеть описание объектной модели, введите свой номер варианта.

Программа должна удовлетворять следующим требованиям:

  1. В программе должны быть реализованы 2 собственных класса исключений (checked и unchecked), а также обработка исключений этих классов.
  2. В программу необходимо добавить использование локальных, анонимных и вложенных классов (static и non-static).

Порядок выполнения работы:

  1. Доработать объектную модель приложения.
  2. Перерисовать диаграмму классов в соответствии с внесёнными в модель изменениями.
  3. Согласовать с преподавателем изменения, внесённые в модель.
  4. Модифицировать программу в соответствии с внесёнными в модель изменениями.

Отчёт по работе должен содержать:

  1. Текст задания.
  2. Диаграмма классов объектной модели.
  3. Исходный код программы.
  4. Результат работы программы.
  5. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Обработка исключительных ситуаций, три типа исключений.
  2. Вложенные, локальные и анонимные классы.
  3. Механизм рефлексии (reflection) в Java. Класс Class.

2-й семестр (весна)

Лабораторная работа #5

Чтобы узнать задание, введите свой номер варианта.

Отчёт по работе должен содержать:

  1. Текст задания.
  2. Диаграмма классов разработанной программы.
  3. Исходный код программы.
  4. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Коллекции. Сортировка элементов коллекции. Интерфейсы java.util.Comparable и java.util.Comparator.
  2. Категории коллекций - списки, множества. Интерфейс java.util.Map и его реализации.
  3. Параметризованные типы. Создание параметризуемых классов. Wildcard-параметры.
  4. Классы-оболочки. Назначение, область применения, преимущества и недостатки. Автоупаковка и автораспаковка.
  5. Потоки ввода-вывода в Java. Байтовые и символьные потоки. "Цепочки" потоков (Stream Chains).
  6. Работа с файлами в Java. Класс java.io.File.
  7. Пакет java.nio - назначение, основные классы и интерфейсы.
  8. Утилита javadoc. Особенности автоматического документирования кода в Java.

Лабораторная работа #6

Чтобы узнать задание, введите свой номер варианта.

Порядок выполнения работы:

  1. Нарисовать прототипы интерфейсов приложения в инструменте прототипирования (выбирается по согласованию с преподавателем).
  2. Утвердить у преподавателя нарисованные прототипы интерфейса.
  3. Реализовать согласованные интерфейсы в коде.

Отчёт по работе должен содержать:

  1. Текст задания.
  2. Диаграмма классов разработанной программы.
  3. Исходный код программы.
  4. Скриншоты интерфейса.
  5. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Компоненты пользовательского интерфейса. Иерархия компонент.
  2. Базовые классы Component и Container.
  3. Менеджеры компоновки.
  4. Модель обработки событий. Класс-слушатель и класс-событие.
  5. События AWT.
  6. Технология JavaFX. Особенности архитектуры, отличия от AWT / Swing.
  7. Компоненты JavaFX. Особенности реализации обработки событий.
  8. Способы задания разметки интерфейса в JavaFX. SceneBuilder.
  9. Технология SWT. Сходства и отличия в сравнении с Swing и JavaFX.
  10. Многопоточные программы. Концепции.
  11. Класс Thread и интерфейс Runnable.
  12. Состояние потока. Синхронизация потока.
  13. Пакет java.util.concurrent. Интерфейс Lock и его реализации.
  14. Атомарные операции.

Лабораторная работа #7

Чтобы узнать задание, введите свой номер варианта.

Отчёт по работе должен содержать:

  1. Текст задания.
  2. Диаграмма классов разработанной программы (как клиентского, так и серверного приложения).
  3. Исходный код программы.
  4. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Шаблоны проектирования. GoF-паттерны.
  2. Сетевое взаимодействие - клиент-серверная архитектура, основные протоколы, их сходства и отличия.
  3. Протокол TCP. Классы Socket и ServerSocket.
  4. Протокол UDP. Классы DatagramSocket и DatagramPacket.
  5. Передача данных по сети. Сериализация объектов.
  6. Интерфейс Serializable. Объектный граф, сериализация и десериализация полей и методов.
  7. Взаимодействие с базами данных. Протокол JDBC.

Лабораторная работа #8

Чтобы узнать задание, введите свой номер варианта.

Вопросы к защите лабораторной работы:

  1. Интернационализация. Локализация. Хранение локализованных ресурсов.
  2. Форматирование локализованных числовых данных, текста, даты и времени. Классы NumberFormat, DateFormat, MessageFormat, ChoiceFormat.
  3. Классы для представления даты и времени из пакета java.time. Преобразование темпоральных величин.
  4. Рефлексия.
  5. Объектно-реляционное отображение.