24.09.2019. Лекция № 4. Черные ящики

Развернуть

  1. Copy constructor.
  2. Move constructor.
  3. Simple assignment operator.
  4. Implicit members.
  5. Operator overloading.
  6. keyword: explicit.

17.09.2019. Лекция № 3. Вывод типов

Развернуть

  1. Rvalue-reference.
  2. Template type deduction.
  3. Three cases of type deduction.
  4. Array arguments.
  5. Function arguments.
  6. auto type deduction.
  7. Uniform initialization.
  8. std::initializer_list.

10.09.2019. Лекция № 2. Шаблоны

Развернуть

  1. Two-phase translation.
  2. Linker errors.
  3. Inclusion model.
  4. Precompiled headers.
  5. Default template arguments.
  6. inline.
  7. static_assert.
  8. Nontype function template parameters.
  9. Nontype class template parameters.
  10. Alias declaration.

03.09.2019. Лекция №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.

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

Развернуть

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

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

Развернуть

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

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

Развернуть

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

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

Развернуть

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

01.04.2019. Лекция №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.

25.03.2019. Лекция №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.

Действия