1 семестр – Основы программирования на языке Java
Цель курса
Рассматривается технология написания Java-приложений с использованием JDK. Слушатели изучат конструкции и механизмы работы языка Java, основанные на парадигме объектно-ориентированного программирования. Изучается вопрос создания графического интерфейса пользователя (GUI) с использованием библиотеки Swing. Также рассматриваются основы написания многопоточных систем и работа со стеком протоколов TCP/IP.
В результате освоения курса слушатели будут:
Знать:
- Основы технологии Java.
- Типы данных, переменные и операторы языка Java
- Основные понятия ООП, включая наследование, абстрактные классы и интерфейсы
- Специальные типы данных, такие как строки (String) и массивы (Arrays)
- Обобщенное программирование
- Механизм пакетов и модификаторы доступа в Java
- Технологию создания графического пользовательского интерфейса
- Многопоточную Модель данных в Java
- Организацию потоков ввода/вывода
- Работу со стеком TCP/IP
Уметь:
Создавать Java приложения с графическим интерфейсом пользователя, способные работать в многопоточной среде и взаимодействовать с сервером с использованием сокетов.
Владеть:
Технологиями написания Java приложений в рамках StandardEdition.
Перечень разделов курса
Основы технологии Java. Понятия и термины. Краткая история Java. Преимущества и особенности Java. Понятия и термины. Комментарии в языке Java. Алфавит языка Java. Зарезервированные слова
Типы данных, переменные и операторы. Примитивные типы данных. Объявления переменных. Область действия и значения по умолчанию. Приведение типов. Операторы. Перечисления
Управление течением программы. Составные операторы. Условные выражения: оператор if-then. Условные выражения: оператор switch/case. Циклы: цикл с предусловием while…. Циклы: цикл с постусловием do… while. Циклы: цикл с фиксированным количеством итераций for. Циклы: цикл перебора коллекций типа foreach
Методы. Создание и использование метода. Возврат значения из метода. Передача параметров в метод. Перегрузка методов. Методы с переменным количеством параметров
Массивы. Определение массивов. Одномерные массивы в Java. Многомерные и иррегулярные массивы. Инициализация и управление массивами
Классы и объекты. Объектно-ориентированная концепция. Переменные класса и экземпляра класса. Объектные ссылки и сборка мусора
Наследование. Механизм наследования в Java. Перекрытие методов и позднее связывание. Методы класса Object
Конструкторы. Предназначение конструкторов. Использование конструкторов. Порядок работы конструкторов. Обратный вызов как пример использования конструкторов
Обобщенное программирование. Общие сведения о настраиваемых типах. Создание настраиваемого типа. Ограниченные типы и метасимвольные аргументы. Ограниченные типы и коллекции. Ограничения настраиваемых типов
Работа со строкам. Класс String и его особенности. Методы класса String. Сравнение классов String и StringBuffer
Абстрактные классы и интерфейсы. Абстрактные классы: постановка задачи. Решение задачи с помощью абстрактных классов. Интерфейсы: постановка задачи. Решение задачи с помощью интерфейсов
Пакеты и модификаторы доступа. Пакеты. Параметр CLASSPATH. Модификаторы доступа. Инкапсуляция
Графические компоненты SWING. AWT как предшественник SWING. Иерархия классов Swing. Графические компоненты SWING
Менеджеры размещения компонентов. Общие сведения о менеджерах расположения. Стандартные менеджеры расположения. Вспомогательные компоненты. Комбинирование менеджеров расположения
Графика в языке Java. Графический контекст и методы его работы. Определение цветов и шрифтов. Рисование на поверхности компонентов
Обработка событий в Java. Основы механизма обработки событий. Классы-обработчики. Примеры использования классов-обработчиков. Внутренние классы
Обработка исключительных ситуаций. Описание механизма обработки исключений. Способы обработки исключений. Диагностические утверждения
Многопоточное программирование. Многопоточная модель Java. Создание потоков в рамках JVM: Класс Thread и интерфейс Runnable. Методы класса Thread
Синхронизация потоков. Синхронизация: постановка задачи. Способы синхронизации потоков. Методы wait() и notify() и notifyAll() класса Object. Способы управления жизненным циклом потока
Потоки ввода-вывода. Иерархия потоковых классов. Чтение данных с консоли. Сериализация объектов
Работа со стеком TCP / IP. Сетевые классы Java. Примеры реализации сетевых приложений: клиент. Примеры реализации сетевых приложений: сервер. Примеры реализации сетевых приложений: многопоточный сервер