programming - title

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

programming - autumn

First Semester (autumn)

pb-portlet-lab0

programming - lab1 - task

Report should include these sections:

  1. Lab work task.
  2. Program source code.
  3. Program output.
  4. Conclusions.

Control questions:

  1. Java programming language. Key features of Java programming language.
  2. Development kit. JDK & JRE.
  3. Primitive data types in Java.
  4. Using variables. Declaration. Initializing. Assignment.
  5. Condition and loop statements.
  6. Using operations and expresssions. Operation priority.
  7. Math functions provided by Java standard library, java.lang.Mathclass.
  8. Formatted output of numbers.

programming - lab2 - addinfo

Comments

Task goal: Learn basic OOP principles using simple example and use them in your program.

TO DO:

  1. Read documentation, pay special attention to Pokemon and Move classes. Later on working on lab continue to read documentation several times.
  2. Download Pokemon.jar. You need to use it to compile and run your program. Don't unpack it. You should learn how to use third-party jar-files together with your program.
  3. Write minimal working program and run it.
    Battle b = new Battle();
    Pokemon p1 = new Pokemon("Alien", 1);
    Pokemon p2 = new Pokemon("Predator", 1);
    b.addAlly(p1);
    b.addFoe(p2);
    b.go();
    
  4. Create one of pokémon class according to your individual task. The class should inherit from base Pokemon class. You should set pokémon types and base stats in the constructor. Add your new pokémon to the team and start the battle.
  5. Create one of move class

pb-portlet-lab1

Please enter your variant number to meet your pokemons.

programming - lab2 - questions

Report document must include:
  1. Laboratory work task descriprion.
  2. UML class diagram for program.
  3. Program source code.
  4. Program output during different use cases.
  5. Conclusions.

Questions to laboratory work:

  1. Object-oriented programming. Basic terms: objects, imheritance, polymorphism, encapsulation.
  2. Class definition. Classes and objects in Java language.
  3. Class members. Access modifiers.
  4. Object creation and initialization. Method calls.
  5. Scope of variables.
  6. final and static modifiers.
  7. Packages. import statement

programming - lab3 - title

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

pb-portlet-lab3

Please enter your variant number to get your object model description.

programming - lab3

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

  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. Функциональные интерфейсы, лямбда-выражения. Ссылки на методы.

programming - lab4 - title

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

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

pb-portlet-lab3

Please enter your variant number to get your object model description.

programming - lab4

Этапы выполнения работы:

  1. Получить вариант
  2. Нарисовать UML-диаграмму, представляющую классы и интерфейсы объектной модели и их взаимосвязи;
  3. Придумать сценарий, содержащий действия персонажей, аналогичные приведенным в исходном тексте;
  4. Согласовать диаграмму классов и сценарий с преподавателем;
  5. Написать программу на языке Java, реализующую разработанные объектную модель и сценарий взаимодействия и изменения состояния объектов. При запуске программа должна проигрывать сценарий и выводить в стандартный вывод текст, отражающий изменение состояния объектов, приблизительно напоминающий исходный текст полученного отрывка. 
  6. Продемонстрировать выполнение программы на сервере helios.
  7. Ответить на контрольные вопросы и выполнить дополнительное задание.

Текст, выводящийся в результате выполнения программы не обязан дословно повторять текст, полученный в исходном задании. Также не обязательно реализовывать грамматическое согласование форм и падежей слов выводимого текста. 

Стоит отметить, что цель разработки объектной модели состоит не в выводе текста, а в эмуляции объектов предметной области, а именно их состояния (поля) и поведения (методы). Методы в разработанных классах должны изменять состояние объектов, а выводимый текст должен являться побочным эффектом, отражающим эти изменения.

Требования к объектной модели, сценарию и программе:

  1. В модели должны быть представлены основные персонажи и предметы, описанные в исходном тексте. Они должны иметь необходимые атрибуты и характеристики (состояние) и уметь выполнять свойственные им действия (поведение), а также должны образовывать корректную иерархию наследования классов.
  2. Объектная модель должна реализовывать основные принципе ООП - инкапсуляцию, наследование и полиморфизм. Модель должна соответствовать принципам SOLID, быть расширяемой без глобального изменения структуры модели. 
  3. Сценарий должен быть вариативным, то есть при изменении начальных характеристик персонажей, предметов или окружающей среды, их действия могут изменяться и отклоняться от базового сценария, приведенного в исходном тексте. Кроме того, сценарий должен поддерживать элементы случайности (при генерации персонажей, при задании исходного состояния, при выполнении методов).
  4. Объектная модель должна содержать как минимум один корректно использованный элемент каждого типа из списка:
    •   абстрактный класс как минимум с одним абстрактным методом;
    •   интерфейс;
    •   перечисление (enum);
    •   запись (record);
    •   массив или ArrayList для хранения однотипных объектов;
    •   проверяемое исключение.
  5. В созданных классах основных персонажей и предметов должны быть корректно переопределены методы equals(), hashCode() и toString(). Для классов-исключений необходимо переопределить метод getMessage().
  6. Созданные в программе классы-исключения должны быть использованы и обработаны. Кроме того, должно быть использовано и обработано хотя бы одно unchecked исключение (можно свое, можно из стандартной библиотеки).
  7. При необходимости можно добавить внутренние, локальные и анонимные классы.

Содержание отчёта по работе:

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

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

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

programming - spring


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

programming - lab5 - title

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

pb-portlet-lab5

Please enter your variant number to get your task text.

programming - lab5 - questions

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

  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.

programming - lab6 - title

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

pb-portlet-lab6

Please enter your variant number to get your task text.

programming - lab6 - questions

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

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

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

  1. Сетевое взаимодействие - клиент-серверная архитектура, основные протоколы, их сходства и отличия.
  2. Протокол TCP. Классы Socket и ServerSocket.
  3. Протокол UDP. Классы DatagramSocket и DatagramPacket.
  4. Отличия блокирующего и неблокирующего ввода-вывода, их преимущества и недостатки. Работа с сетевыми каналами.
  5. Классы SocketChannel и DatagramChannel.
  6. Передача данных по сети. Сериализация объектов.
  7. Интерфейс Serializable. Объектный граф, сериализация и десериализация полей и методов.
  8. Java Stream API. Создание конвейеров. Промежуточные и терминальные операции.
  9. Шаблоны проектирования: Decorator, Iterator, Factory method, Command, Flyweight, Interpreter, Singleton, Strategy, Adapter, Facade, Proxy.

programming - lab7 - title

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

pb-portlet-lab7

Please enter your variant number to get your task text.

programming - lab7 - questions

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

  1. В качестве базы данных использовать PostgreSQL.
  2. Для подключения к БД на кафедральном сервере использовать хост pg, имя базы данных - studs, имя пользователя/пароль совпадают с таковыми для подключения к серверу.

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

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

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

  1. Многопоточность. Класс Thread, интерфейс Runnable. Модификатор synchronized.
  2. Методы wait(), notify() класса Object, интерфейсы Lock и Condition.
  3. Классы-сихронизаторы из пакета java.util.concurrent.
  4. Модификатор volatile. Атомарные типы данных и операции.
  5. Коллекции из пакета java.util.concurrent.
  6. Интерфейсы Executor, ExecutorService, Callable, Future
  7. Пулы потоков
  8. JDBC. Порядок взаимодействия с базой данных. Класс DriverManager. Интерфейс Connection
  9. Интерфейсы Statement, PreparedStatement, ResultSet, RowSet
  10. Шаблоны проектирования.

programming - lab8 - questions

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

pb-portlet-lab8

Please enter your variant number to get your task text.

programming - lab8 - questions

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

  1. Компоненты пользовательского интерфейса. Иерархия компонентов.
  2. Базовые классы ComponentContainerJComponent.
  3. Менеджеры компоновки.
  4. Модель обработки событий. Класс-слушатель и класс-событие.
  5. Технология JavaFX. Особенности архитектуры, отличия от AWT / Swing.
  6. Интернационализация. Локализация. Хранение локализованных ресурсов.
  7. Форматирование локализованных числовых данных, текста, даты и времени. Классы NumberFormatDateFormatMessageFormatChoiceFormat.