Тема 1. Введение
1.1 Основные термины и понятия
Цели и задачи курса.
Основные принципы объектно-ориентированного программирования.
1.2 Платформа Java SE
Редакции Java-платформы.
Структура платформы Java SE.
Виртуальная Java-машина.
Стандартные пакеты и утилиты.
Назначение и область применения языка Java.
Основные характеристики языка Java.
1.3 Установка и настройка среды разработки.
Разработка и выполнение Java программы на платформе Java SE
Получение дистрибутива и развёртывание Java-платформы.
Настройка среды окружения.
Проверка работоспособности.
Инструментарий Java-разработчика.
Java Development Kit (JDK).
Процесс разработки Java-приложений.
Интегрированные среды разработки.
1.4 Типизация в языках программирования
Назначение и роль типизации в языках программирования.
Роль типов в языках программирования.
Определение понятий «тип», «объект» и «ссылка».
Понятие о встроенных и пользовательских типах.
Простые и агрегатные типы данных.
Области видимости типов и их элементов.
Понятие «объекта» в типизированных языках.
Объявление объекта.
Жизненный цикл объекта
Практические занятия
1. Установка платформы Java и настройка среды выполнения.
2. Написание исходного кода простейшей программы.
3. Компиляция, отладка и запуск простого Java-приложения стандартными средствами JDK.
Тема 2. Классы
2.1 Определение класса
Классы, как пользовательский тип данных.
Общая схема определения класса.
Атрибуты (поля) класса.
Методы класса.
Конструктор класса.
Создание экземпляра класса.
Статические члены класса.
Обращение к членам класса.
Вызов методов.
Рекурсивный вызов методов.
Перегрузка конструкторов и методов.
Явный вызов конструктора.
Метод main().
Сборщик мусора и метод finalize().
Области видимости и спецификаторы доступа.
Локальные области видимости.
2.2 Наследование
Основные термины и определения, связанные с механизмом наследования.
Роль и особенности наследования в языке Java.
Определение наследования.
Наследование членов класса.
Доступ к унаследованным членам класса.
Переопределение методов при наследовании.
Порядок вызова конструкторов.
Спецификатор final.
2.3 Специальные виды классов
Назначение и особенности определения абстрактных классов.
Назначение и особенности определения вложенных классов.
Назначение и особенности определения анонимных классов.
Практические занятия
1. Определение простого класса.
2. Определение класса со статическими членами.
4. Определение подкласса.
3. Создание экземпляра класса и обращение к его методам.
5. Переопределение методов при наследовании.
6. Порядок вызова конструкторов класса при наследовании.
7. Явный вызов конструктора суперкласса.
8. Запрет расширения (наследования) класса.
9. Определение абстрактного класса и реализация его подклассов.
10. Определение вложенного класса.
11. Определение анонимного класса.
Тема 3. Интерфейсы
3.1 Определение интерфейса как пользовательского типа
Интерфейс как пользовательский тип данных.
Особенности интерфейсов в языке Java.
Общая схема объявления интерфейса.
Переменные в интерфейсах.
Методы интерфейсов.
Методы по умолчанию.
Принятые умолчания.
Наследование интерфейсов.
3.2 Реализация интерфейсов
Определение класса, наследующего интерфейс.
Основные правила переопределения методов при наследовании.
Практические занятия
1. Определение простого интерфейса.
2. Наследование интерфейса.
3. Реализация интерфейса.
4. Использование ссылок интерфейсного типа.
Тема 4. Перечислимый тип и аннотации
4.1 Определение и использование перечислимого типа
Назначение перечислимого типа.
Общая схема определения перечислимого типа.
Особенности определения и использования перечислимого типа
4.2 Определение и использование аннотации
Назначение аннотации.
Основные стандартные аннотации.
Классы хранения аннотаций.
Общая схема определения аннотации.
Особенности использования аннотации
Практические занятия
1. Определение перечислимого типа для представления ролей пользователей
2. Определение пользовательской аннотации для указания версии класса
Тема 5. Параметризованные (Generic) типы
5.1 Назначение и роль обобщенных типов в языке Java
Понятие об обобщённом программировании.
Роль и назначение обобщённых типов в платформе Java.
Общая схема определения параметризованного типа.
Определение параметризованных методов и конструкторов.
Ограничения параметризованных типов
5.2 Определение параметризованного типа
Примеры использования параметризованных типов
Практические занятия
Определение и использование параметризованного класса-контейнера
Тема 6. Пакеты
6.1 Назначение и роль пакета в языке Java
Пакет как средство логической организации пользовательских типов.
Пакетная область видимости.
6.2 Определение и использование пакетов Определение пакета, директива package.
Расположение файлов пакета в файловой системе.
Доступ к типам пакета.
Назначение и использование директивы import.
Соглашение об именованиях.
Пакеты по умолчанию.
Тема 7. Встроенные типы данных и приведение типов
7.1 Примитивные типы
Особенности встроенных типов.
Классификация встроенных типов.
Объявление переменных и констант встроенного типа.
Особенности представления и использования интегральных типов.
Тип byte.
Тип short.
Тип int.
Тип long.
Назначение и особенности использования символьного типа char.
Особенности представления и использования вещественных типов.
Тип float.
Тип double.
Назначение и особенности использования логического типа boolean.
7.2 Специальные типы
Назначение и особенности использования псевдо-типа void.
Назначение и особенности использования встроенной константы null.
7.3 Приведение типов
Назначение приведения типов.
Условия, при соблюдении которых возможно приведение типов.
Явное приведение типов.
Неявное (автоматическое) приведение типов.
Ранжирование встроенных типов по диапазону представления.
Особенности приведения встроенных типов.
Ранжирование пользовательских типов по диапазону представления.
Особенности приведения ссылочных типов.
Практические занятия
1. Объявление и инициализация переменных и констант интегрального типа.
2. Объявление и инициализация переменных и констант символьного типа.
3. Объявление и инициализация переменных и констант вещественного типа.
4. Объявление и инициализация переменных и констант логического типа.
5. Разбор примера с приведением встроенных типов.
6. Разбор примера с приведением ссылочных типов.
Тема 8. Массивы
8.1 Определение массива
Основные свойства массива как агрегатного типа данных.
Операции, определённые для массива.
Особенности реализации массивов в языке Java.
8.2 Одномерные массивы
Определение ссылки на массив.
Создание массива.
Инициализация массива.
Доступ к элементам массива.
8.3 Многомерные массивы
Особенности реализации многомерных массивов в языке Java.
Объявление массива.
Инициализация многомерного массива.
Практические занятия
1. Создание и инициализация массива встроенного типа;
2. Создание и инициализация массива ссылочного типа данных Создание и инициализация многомерного массива встроенного типа; многомерного
3. Создание и инициализация многомерного массива ссылочного типа данных.
Тема 9. Операторы управления
9.1 Назначение операторов управления.
Классификация операторов управления.
Основные термины и определения.
Назначение и особенности операторов управления.
Классификация стандартных операторов управления.
Синтаксическая роль пустого оператора.
9.2 Операторы управления
Условный оператор if-else.
Оператор выбора switch.
Назначение и особенности операторов цикла.
Оператор do – while.
Оператор while.
Оператор for.
Назначение и особенности реализации операторов безусловного перехода в языке Java.
Оператор continue. Оператор break. Оператор return
Практические занятия
1. Использование оператора if-else;
2. Использование оператора switch;
3. Примеры реализации алгоритма полного перебора элементов массива на основе каждого из операторов цикла;
4. Пример различия в использовании операторов цикла разных видов.
5. Использование операторов безусловного перехода в реализации алгоритма поиска.
Тема 10. Обработка исключений
10.1 Общие принципы обработки исключений.
Типы исключений Определение термина «исключение».
Общие принципы обработки исключений.
Особенности обработки исключений в Java-программах.
Стандартные типы исключений.
Определение пользовательских исключений
10.2 Операторы try-catch и throw
Структура и особенности исполнения оператора try-catch-finally.
Оператор throw. Делегирование обработки исключений.
Практические занятия
1. Разбора примера работы простого оператора try-catch.
2. Повторный выброс исключения.
3. Разбора примера с делегированием обработки исключения.
4. Определение пользовательского исключения, описывающего ошибки в определении дат.
Тема 11. Операции
11.1 Общие сведения об операциях, определённых в языке Java.
Приоритеты операций
Основные термины и определения.
Классификация операций.
Стандартный порядок выполнения операций в выражениях.
Понятие о приоритете операции.
Изменение порядка выполнения операций.
11.2 Арифметические и поразрядные операции
Арифметические бинарные операции.
Арифметические унарные операции.
Приведение типов при выполнении операций.
Особенности использования типов byte и short в арифметических операциях.
Поразрядные бинарные операции сложения, умножения и исключающего сложения.
Операции сдвига. Операция поразрядной инверсии.
11.3 Операции отношения (сравнения), логические операции и операции присваивания
Поразрядные бинарные операции сложения, умножения и исключающего сложения.
Операции сдвига.
Операция поразрядной инверсии.
Логические операции.
Особенности использования логических операций сложения и умножения в оптимизируемой и не оптимизируемой формах.
Операция присваивания.
Сокращённая запись выражений с использованием операции присваивания. «Цепочечное» присваивание.
11.4 Специальные операции
Операция new().
Операция instanceof.
Тернарная операция.
Другие операции.
Практические занятия
1. Пример использования арифметических операций.
2. Примеры ошибочных вычислений, связанных с неявными приведениями типов.
3. Примеры использования поразрядных операций при вычислениях и анализе структуры данных.
4. Примеры использования поразрядных операций при вычислениях и анализе структуры данных.
5. Примеры использования логических операций.
6. Примеры использования операции присваивания.
7. Пример использования тернарной операции;
8. Пример использования операции instanceof.
9. Примеры использования поразрядных операций при вычислениях и анализе структуры данных.
Тема 12. Лексемы, комментарии и блоки кода
12.1 Общие сведения о лексической структуре языка Java.
Основные виды лексем
Понятие о лексическом анализе программ.
Классификация лексем.
Пробельные символы.
Разделители.
Ключевые слова языка Java.
Назначение идентификаторов.
Синтаксические правила записи идентификаторов.
Соглашения о выборе идентификаторов.
Литеральные константы интегрального типа.
Литеральные константы вещественного типа.
Литеральные константы символьного типа.
Литеральные константы логического типа.
Литеральные константы строкового типа.
Литеральная константа null.
12.2 Комментарии и блоки кода
Назначение комментариев.
Однострочный комментарий.
Многострочный комментарий.
Документирующий комментарий.
Практика применения комментариев.
Блоки кода.
Особенности областей видимости, связанных с блоками кода