Home - BelyiZ/JavaCourses GitHub Wiki

Привет!

Это учебный репозиторий для проведения курсов программирования на Java. В данном Wiki размещаются конспекты тем курса и различные вспомогательные материалы и инструкции. В исходном коде этого репозитория можно найти домашние задания для большинства тем.

Всегда буду рад получить любую обратную связь о курсе.

Программа курса:

Одна тема на один астрономический час (60 минут)

Блок 0. Введение

Тема 0. Введение в курс

  1. О курсе
  2. О программе курса
  3. Технические требования

Тема 1. Введение в Java

  1. Общая информация о Java
  2. Hello World приложение
  3. Создание проекта в Intellij IDEA
  4. Общая информация о системах контроля версий
  5. Checkout GItHub репозитория

Блок 1. Процедурное программирование

Тема 2. Типы данных

  1. Переменные и константы
    1. Создание переменных
  2. Обзор типов данных в Java
    1. Примитивные типы данных
      1. Целочисленные типы
      2. Дробные числа
      3. Логический тип
    2. Ссылочные типы данных
    3. Строки
  3. Массивы

Тема 3. Операторы в Java

  1. Арифметические операторы
  2. Битовые операторы
  3. Операторы сравнения
  4. Логические операторы
  5. Операторы присваивания
  6. Оператор instanceOf
  7. Тернарный оператор

Тема 4. Управляющая логика

  1. Условный оператор if
  2. Условный оператор switch
  3. Циклы
    1. Цикл for
    2. Цикл for-each
    3. Циклы while и do-while
    4. Операторы break и continue

Тема 5. Работа со строками

  1. Операции со строками
    1. Соединение строк
    2. Сравнение строк
  2. Список литературы/курсов

Блок 2. Основы ООП

Тема 6. Введение в ООП

  1. Основные понятия ООП
    1. Класс
    2. Конструктор
  2. Инкапсуляция, наследование, полиморфизм
    1. Инкапсуляция
    2. Наследование
    3. Полиморфизм
      1. Переопределение
      2. Перегрузка
      3. Параметрический полиморфизм

Тема 7. Класс Object и его методы

  1. Метод toString
  2. Методы hashCode и equals
    1. Метод equals
    2. Метод hashCode
  3. Метод getClass
  4. Методы wait и notify
  5. Метод finalize
  6. Метод clone

Тема 8. Инкапсуляция

  1. Пакеты
    1. Импорт
  2. Модификаторы доступа
    1. Доступы к классам
    2. Геттеры и сеттеры
      1. Геттеры
      2. Сеттеры
  3. Вложенные классы

Тема 9. Наследование и static

  1. Объявление и синтаксис наследования
  2. Абстрактные классы
    1. Абстрактные методы
  3. Обобщение
  4. Перегрузка и переопределение методов
    1. Переопределение методов
    2. Аннотация @override
    3. Запрет переопределения методов
    4. Перегрузка методов
    5. Вызов методов суперкласса
  5. Композиция и агрегирование
    1. IS A отношения
    2. HAS A отношения
  6. Приведение типов
  7. Upcasting и Downcasting
  8. Пример инструкции instanceof
  9. Наследование полей и методов
    1. Поля
    2. Конструкторы
    3. Вложенные классы
    4. Запрет наследования
  10. Статичные поля и методы
  11. Статический метод
  12. Особенности использования статических методов, полей и классов

Тема 10. Полиморфизм

  1. Перегрузка и переопределение методов
  2. Абстрактные классы и методы
  3. Интерфейсы
    1. Методы по умолчанию
    2. Анонимные классы
  4. Параметрический полиморфизм (generics)

Тема 11. Параметрический полиморфизм Generics

  1. Что такое Дженерики и зачем они нужны
  2. Cпособ применения Дженериков
    1. Типовой класс
    2. Cпособ применения "Дженериков": Конструктор
    3. Cпособ применения "Дженериков": Интерфейс
    4. Cпособ применения "Дженериков": Метод
  3. Ограничения дженериков

Тема 12. Enum Перечисления

  1. Конструкция Enum
  2. Перечисление это класс
  3. Элементы перечисления
  4. Название и порядковый номер элемента Enum
    1. Получение всех элементов перечисления
    2. Добавляем свои методы в Enum класс
  5. Рекомендации в случае использования Enum
  6. Случаи использования Enum
  7. Примеры использования Enum
    1. Специальные коллекции для перечислений

Тема 13. Паттерны

  1. Что такое Шаблоны проектирования (Паттерны)
  2. Порождающие шаблоны
  3. Поведенческие шаблоны
  4. Структурные шаблоны

Тема 14. Java Code Convention

  1. Не игнорируйте исключения
  2. Комментарии/Javadoc
  3. Короткие методы
  4. Локальные переменные
  5. Импорты
  6. Отступы
  7. Названия полей и методов
  8. Фигурные скобки
  9. Длина строки
  10. Согласованность

Блок 3. Коллекции

Тема 15. Java Collection Framework

  1. Обзор Collections Framework
  2. Iterator

Тема 16. Списки

  1. ArrayList
  2. LinkedList
  3. Сравнение ArrayList и LinkedList

Тема 17. Очереди

  1. Интерфейс Queue
  2. Методы
  3. LinkedList(Queue)
  4. PriorityQueue

Тема 18. Карты

  1. Интерфейс Map
  2. Общие карты
  3. Функциональные операции

Тема 19. Множества

  1. Интерфейс Set
  2. Особенности
  3. Операции с Set

Блок 4. Stream API

Тема 20. Лямбды

  1. Функциональный интерфейс
  2. Реализация лямбд
    1. Лямбды как объекты
    2. Согласование интерфейса
    3. Реализация
    4. Захват переменных
  3. Особенности Лямбд
  4. Случаи использования Лямбд

Тема 21. Указатели на методы

  1. Ссылки на методы
  2. Ссылка на статический метод
  3. Ссылка на нестатический метод конкретного объекта
  4. Ссылка на нестатический метод любого объекта конкретного типа
  5. Ссылка на конструктор

Тема 22. Stream

  1. Обзор функциональности Stream
    1. Операторы (Методы класса Stream)
      1. Конвейерные методы работы со Stream
      2. Терминальные методы работы со Stream
      3. Методы у числовых Stream
      4. Особенные методы Stream
  2. Map/reduce

Тема 23. Spliterator

  1. Интерфейс Сплитератора
  2. Методы Сплитератора
  3. Особенности использования Сплитератора

Блок 5. Ввод/вывод

Тема 24. Исключения

  1. Зачем нужны исключения?
    1. Исключения в Java
  2. Типы исключений
    1. Непроверяемые исключения
    2. Проверяемые исключения
  3. Генерация исключений
    1. Создание собственных классов-исключений
  4. Обработка исключений
    1. Конструкция try-catch-finally
    2. Конструкция try-with-resources
    3. Наследование методов бросающих исключения
    4. Проброс исключений без обработки

Тема 25. Работа с файлами

  1. Потоки ввода и вывода
  2. Try-with-resources
  3. Чтение файла
  4. Запись в файл
  5. Создание и удаление файлов
  6. Временные файлы

Тема 26. Работа с консолью и логами

  1. Ввод и вывод на консоль
  2. Логирование
  3. Форматирование строк

Блок 6. Более продвинутые возможности языка

Тема 27. Аннотации

  1. Обзор функциональности аннотаций
  2. Создание аннотаций
  3. Примеры использования

Тема 28. Рефлексия

  1. Рефлексия в Java
  2. Работа с объектом Class
  3. Примеры использования

Блок 7. Модель памяти

Тема 29. Структура памяти

  1. Стэк
  2. Куча
  3. Различия
  4. GC

Тема 30. Ссылки

  1. Сильные ссылки
  2. Слабые и мягкие ссылки
  3. Фантомные ссылки
  4. Утечки памяти

Блок 8. Многопоточность

Тема 31. Введение в многопоточность

  1. Многопоточность в Java
  2. Создание потоков
  3. Жизненный цикл потоков

Тема 32. Конкуренция

  1. Метод wait и его модификации
    1. Метод wait с аргументом timeout
    2. Метод wait с аргументами timeout и nanos
    3. Метод wait без аргументов
  2. Методы notify, notifyAll
    1. Метод notify
    2. Метод notifyAll

Тема 33. Работа с потоками ForkJoinPool

  1. Принцип работы ForkJoinPool
  2. Модель ForkJoin
  3. Внутреннее устройство ForkJoinPool
    1. Алгоритм "Кражи работы"
  4. Создание экземпляра ForkJoinPool
  5. ForkJoinTask
    1. RecursiveAction
    2. RecursiveTask
  6. Отправка задач в ForkJoinPool
  7. Рекомендации в случае использования ForkJoinPool
  8. Случаи использования ForkJoinPool

Блок 9. Spring

Тема 34. Введение в Spring

  1. Модули Spring
  2. Преимущества Spring Framework
  3. Создание Spring-проекта

Тема 35. HTTP и REST

  1. Обзор протокола HTTP
  2. Обзор подходов построения REST API
  3. Форматы данных (JSON, XML, YAML)

Тема 36. Spring MVC

  1. Паттерн MVC
  2. Spring-контроллеры
  3. Шаблонизаторы
  4. Обзор и подключение Swagger
  5. Обработка ошибок

Тема 37. Spring Data JPA

  1. Общая информация о JPA и ORM
  2. Подключение к базе данных
  3. Spring-репозитории
  4. CRUD-операции

Тема 38. Кеширование

  1. Обзор вариантов кеширования
  2. Сложные запросы к БД
  3. Обзор возможностей Spring Cache