Курс: Язык Scala для Java-разработчиков
Продолжительность курса: 32 ак. ч.
Описание курса:
Язык Scala в последние годы набирает популярность не только в программировании, но в enterprise-разработке. К его преимуществам относятся использование самых современных нововведений в языки программирования и обширная поддержка функционального подхода к разработке. Это дает возможность повысить эффективность разработки, создавая очень краткий и эффективный код. Код на Scala компилируется в Java байт-код и выполняется внутри JVM, что обеспечивает отличную совместимость с существующими библиотеками и инструментами Java.
Слушатели получат представление о специфике и особенностях языка Scala, его преимуществах и сложных местах.
Курс включает рассмотрение операторов и типов данных Scala, изучение основных структур данных, таких как массивы, map, tuples, использование объектно-ориентированного и функционального программирования, работу с коллекциями Scala, применение pattern matching, case-классов, generic-типов и неявных преобразований.
Предлагается большое количество практических упражнений.
Аудитория:
• Java-разработчики;
• Разработчики на других современных языках программирования (C++, C#, и т.д.).
Необходимая подготовка:
Необходимо владение современным объектно-ориентированным языком программирования, желательно Java.
Программа курса:
Модуль 1. Введение в Scala
Модуль 2. Инструкции, операторы и типы
• Условные операторы
• Циклы
• Функции
• Переменные
• Операторы
• Тип Unit
• Типы функций
• Типы Null, Nothing, Any, AnyRef и AnyVal
• Исключения
Модуль 3. Arrays, maps, tuples
• Создание, добавление и удаление элементов массива
• Доступ к элементам массива
• Массивы фиксированной и вариативной длины
• Многомерные массивы
• Операции с массивами
• Сортировка массива
• Конструирование и доступ к ассоциативным таблицам
• Итерирование, изменение, сортировка ассоциативных таблиц
• Кортежи
• Зиппирование
Модуль 4. Классы и наследование
• Классы
• Свойства с геттерами и сеттерами
• Использование скобок при вызове методов
• Свойства только с геттерами
• Вспомогательные конструкторы
• Основной конструктор
• Вложенные классы
• Расширение класса
• Переопределение методов
• Проверка и приведение типа
• Вызов конструктора суперкласса
• Переопределение полей
• Анонимные подклассы
• Абстрактные поля
• Порядок конструирования и ранние определения
• Иерархия наследования
• Сравнение объектов на равенство
Модуль 5. Объекты
• Синглтоны
• Объекты-компаньоны
• Объекты, расширяющие класс или трейт
• Перечисления
• Пакеты-объекты
• Методы apply и unapply
• Ленивые объекты
• Объекты, использующие несколько трейтов
Модуль 6. Трейты
• Трейты как интерфейсы
• Трейты с конкретной имплементацией
• Переопределение абстрактных методов в трейтах
• Конкретные и абстрактные поля в трейтах
• Порядок конструирования трейта
• Инициализация полей трейта
• Трейты, расширяющие классы
• Self-типы
Модуль 7. Функции
• Функции как переменные
• Аргументы по умолчанию и именованные аргументы
• Функции без возвращаемого значения
• Анонимные функции
• Функции с параметрами-функциями
• Замыкания
• Функциональные интерфейсы
• Каррирование
• Передача функции как параметра в виде блока кода
• Использование return
Модуль 8. Коллекции
• Трейты коллекций в Скала: Map, Set и Seq
• Изменяемые и неизменяемые коллекции
• Последовательности
• Списки
• Изменяемые списки
• Множества
• Операторы для работы с коллекциями
• Стандартные методы работы с коллекциями
• Использование функций map, reduce, fold и scan
• Зиппирование
• Итераторы
• Потоки данных
• Потокобезопасные коллекции
• Параллельные вычисления в коллекциях
• Взаимодействие с коллекциями Java
Модуль 9. Pattern matching
• Использование паттерн матчинга
• Переменные в паттернах
• Паттерны-типы
• Сравнение с массивами, списками и кортежами
• Регурярные выражения
• Экстракторы
• Паттерны в определении переменных
• Паттерны в выражениях for
Модуль 10. Case классы, тип Option и partial функции
• Сase-классы
• Метод copy и именованные параметры
• Защищенные классы
• Тип Option
• Частично определенные функции
Модуль 11. Generics
• Дженерик-классы
• Дженерик-функции
• Ограничения типов, вариативные типы +T, -T
• Использование _ вместо типа
• 12. Неявные преобразования
• Ключевое слово implicit для определения неявного приведения типа
• Импортирование и использование неявных преобразований
• Неявные параметры
Окончательная цена указывается в договоре на обучение.