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

Развернуть

  1. Motivation for templates.
  2. How it work? Instantiation.
  3. Template argument deduction from a function call.
  4. Class templates.
  5. Function templates specialization.
  6. Class templates specialization.
  7. Member templates.
  8. Traits classes.
  9. Policy classes.
  10. Functors from <functional>. std::bind.
  11. Lambda-expression.
  12. SFINAE.
  13. Iterator implementation until and since C++17.

18.05.2020. Лекция № 12. Принцип разделения интерфейса.

Развернуть

  1. Принцип разделения интерфейса (ISP).
  2. SOLID.
  3. Проектирование для задачи линейной аппроксимации набора точек.

04.05.2020. Лекция № 11. Графическая нотация. Принципы LSP и DIP.

Развернуть

  1. Графическая нотация для отношений.
  2. Пример: проектирование программы форматирования текста.
  3. Принцип подстановки Лискоу (LSP).
  4. Принцип инверсии зависимостей (DIP).

27.04.2020. Лекция №10. Отношения между классами. Принцип открытия-закрытия.

Развернуть

  1. Наследование.
  2. Композиция. Выбор между композицией и наследованием.
  3. Агрегация. Разница между композицией и агрегацией.
  4. Ассоциация.
  5. Пример замены композиции на ассоциацию.
  6. Принцип открытия-закрытия (OCP).
  7. Как вносить изменения, не нарушая принцип OCP? Выделение абстракции.

20.04.2020. Лекция № 9. Хорошие и плохие ОО-программы

Развернуть

  1. Общие требования к классам (декомпозиция, модульная композиция, модульная понятность, модульная непрерывность, модульная защищённость).
  2. Простая и незамысловатая реализация программы вычисления медиан.
  3. Реализация с одним большим классом.
  4. Принцип одной зоны ответственности (Single Responsibility Principle, SRP).
  5. Разнесение зон ответственности через структуры данных. Функциональный подход.
  6. Разделение вычисления медиан на классы Parser и MediansMedian.
  7. Альтернативное разделение на классы: Parser, ParserClient и MediansMedian. «Активные» и «пассивные» классы.

13.04.2020. Лекция №8. Исключения.

Развернуть

  1. Abnormal program termination.
  2. Return error codes.
  3. Macro errno.
  4. try/catch/throw.
  5. Using objects as exceptions.
  6. Exception specifications.
  7. Unwinding stack.
  8. More exception features.
  9. RAII.
  10. Exceptions in constructors.
  11. Best practices.

06.04.2020. Лекция №7. STL алгоритмы.

Развернуть

  1. Copying items from containers to containers.
  2. Sorting containers.
  3. Transforming items in containers.
  4. Finding items.
  5. Locating patterns in strings with std::search.
  6. Dictionary merging tool.
  7. Fill and generate containers.
  8. Checks by predicate.
  9. Functor.

23.03.2020. Лекция №6. STL контейнеры.

Развернуть

  1. std::list.
  2. std::forward_list.
  3. std::map.
  4. std::multimap.
  5. std::set.
  6. std::unordered_map.
  7. std::unordered_multimap.
  8. std::unordered_set.
  9. Erase-remove idiom on std::vector.
  10. Filtering duplicates.
  11. Fast or safe way to access std::array or std::vector.
  12. Word frequency counter.

16.03.2020. Лекция №5. STL введение.

Развернуть

  1. Стандартные потоки ввода / вывода (standard input / output streams).
  2. Манипуляторы (manipulators).
  3. Файловый поток (std::fstream).
  4. Строковый поток (std::stringstream).
  5. std::string.
  6. Итераторы (iterators).
  7. auto & range-based for-loop.

02.03.2020. Лекция №4. Наследование.

Развернуть

  1. Виртуальный деструктор (virtual destructor).
  2. Спецификатор final.
  3. Спецификатор override.
  4. Абстрактный класс (abstract class).
  5. Модификаторы доступа (access modifiers).
  6. Спецификатор friend.
  7. Отличия struct и class.
  8. Пространство имен (namespace).
  9. Перегрузка операторов (operators overloading).
  10. Правило трех (rule of three).
  11. Спецификаторы default и delete.
  12. Аргументы по умолчанию (default arguments).

Действия