16.10.2018. Лекция №7. Паттерны проектирования (ч.2).

Развернуть

  1. Паттерн Iterator (Итератор).
  2. Паттерн Command (Команда).
  3. Паттерн Template method (Шаблонный метод).
  4. Паттерн State (Состояние).
  5. Паттерн Strategy (Стратегия).

09.10.2018. Лекция №6. Паттерны проектирования (ч.1).

Развернуть

  1. Design Patterns как явление.
  2. Виды паттернов.
  3. Паттерн Singleton (Одиночка).
  4. Паттерн Builder (Строитель).
  5. Паттерн Factory Method (Фабричный метод).
  6. Паттерн Prototype (Прототип).

02.10.2018. Лекция №5. Вариативные шаблоны.

Развернуть

  1. Эмуляция вариативных шаблонов (variadic template) до С++11.
  2. Эллипсис оператор (...).
  3. Пакет параметров шаблона (template parameter pack).
  4. Раскрытие пакета (pack expansion).
  5. Пример вариативного шаблона функций.
  6. Перегрузка вариативных и невариативных шаблонов.
  7. Подсчет аргументов пакета параметров.
  8. Распаковка без рекурсии.
  9. Выражения свертки (fold expression) C++17.
  10. Реализация tuple.

25.09.2018. Лекция №4. Современный С++.

Развернуть

  1. Объявление псевдонимов (alias declaration).
  2. Применение decltype и его особенности.
  3. std::move.
  4. Универсальные ссылки (universal references).
  5. Свертывание ссылок (reference collapsing).
  6. std::forward.
  7. Прямая передача (perfect forwarding).

18.09.2018. Лекция №3. «Черные ящики».

Развернуть

  1. Виды конструкторов.
  2. Конструкторы копирования и перемещения.
  3. Перегрузка оператора присваивания.
  4. Присваивание-копирование и присваивание-перемещение.
  5. Операции, генерируемые компилятором по умолчанию.
  6. Арифметические и побитовые операторы. Операторы (составного) присваивания, сравнения, логические, с указателями и др.
  7. Оператор преобразования типа. Создание временного объекта с вызовом конструктора с одним аргументом.
  8. Явные и неявные преобразования типов. Ключевое слово explicit.
  9. Глобальные operator new и operator delete.
  10. Placement new.
  11. Задание operator new и operator delete для конкретного класса.
  12. Удаление версий операторов, сгенерированных по умолчанию.
  13. Алгоритм поиска оператора.
  14. Операторы, которые нельзя перегрузить.

11.09.2018. Лекция №2. Вывод типов.

Развернуть

  1. Rvalue-ссылки.
  2. Правила вывода типа шаблона.
  3. Универсальные ссылки.
  4. Вывод типа auto.
  5. Отличие вывода типа auto от вывода типа шаблона.
  6. std::initializer_list.
  7. Унифицированная инициализация.
  8. Преимущества и недостатки фигурной инициализации.

04.09.2018. Лекция №1. Шаблоны

Развернуть

  1. Мотивация для шаблонов.
  2. Как работают шаблоны. Инстанцирование.
  3. Вывод параметров шаблона по типам параметров у шаблонной функции.
  4. Пример шаблона функции из STL.
  5. Шаблоны классов.
  6. Специализация шаблонов функций.
  7. Специализация шаблонов классов.
  8. Шаблоны методов классов.
  9. Классы свойств и значений.
  10. Классы стратегий.
  11. Готовые функторы из <functional>. std::bind.
  12. Лямбда-функции.
  13. Принцип SFINAE. Предикат, проверяющий, является ли переданный параметр шаблона классом.
  14. Реализация своего итератора до и после C++17.
  15. Метапрограммирование. Вычисление целочисленной степени с помощью шаблонов.

30.04.2018. Лекция № 13. Практическое руководство по разработке

Развернуть

  1. Планирование.
  2. Классы и объекты.
  3. Ядро и прототип.
  4. Рефакторинг.

23.04.2018. Лекция № 12. Ещё о проектировании

Развернуть

  1. Реализация задачи генерации текста на основе цепей Маркова.
  2. Принципы KISS, YAGNI и ЗСПКБР.
  3. Проектирование для задачи чтения и разбора CSV-файлов.

Код программы markovka: https://github.com/be9/oopcode/tree/master/markovka

16.04.2018. Лекция № 11. Принцип отделения интерфейса. «Малое ООП»

Развернуть

  1. Принцип отделения интерфейса (ISP).
  2. «Большое ООП» и «Малое ООП».
  3. Проектирование для задачи линейной аппроксимации набора точек.
  4. …и для задачи экспоненциальной аппроксимации.

Действия