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

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

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

Развернуть

  1. Список инициализации (member initializer list)
  2. Делегирующие конструкторы (delegating constructors).
  3. Порядок инициализации.
  4. Ссылки (reference).
  5. Композиция (composition).
  6. Наследование (inheritance).
  7. Множественное наследование (multiple inheritance).
  8. "Dreaded diamond".
  9. Виртуальное наследование (virtual inheritance).
  10. Виртуальные функции (virtual functions).

22.02.2021. Лекция №2. C++ как Си с классами.

Развернуть

  1. Сравнение языков C & C++ на примере stack'а .
  2. Конструктор (constructor), деструктор (destructor), методы (methods).
  3. Что скрывает компилятор?
  4. Keyword this.
  5. new / delete vs malloc / free.
  6. Реализация new / delete на С.
  7. Статические члены класса (static members).
  8. Inline функции.
  9. Перегрузка функций (function overloading).
  10. Mangling.
  11. Введение в наследование (inheritance).
  12. Реализация наследования на С.

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.

Действия