Описание
Язык Scala в последние годы набирает популярность не только в программировании, но в enterprise-разработке. К его преимуществам относятся использование самых современных нововведений в языки программирования и обширная поддержка функционального подхода к разработке. Это дает возможность повысить эффективность разработки, создавая очень краткий и эффективный код. Код на Scala компилируется в Java байт-код и выполняется внутри JVM, что обеспечивает отличную совместимость с существующими библиотеками и инструментами Java.
Слушатели получат представление о специфике и особенностях языка Scala, его преимуществах и сложных местах.
Курс включает рассмотрение операторов и типов данных Scala, изучение основных структур данных, таких как массивы, map, tuples, использование объектно-ориентированного и функционального программирования, работу с коллекциями Scala, применение pattern matching, case-классов, generic-типов и неявных преобразований.
Предлагается большое количество практических упражнений.

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