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

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

18.02.2019. Лекция №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. Реализация наследования на С.

11.02.2019. Лекция №1. Введение в ООП.

Развернуть

  1. Почему ООП и С++? О курсе.
  2. Парадигмы программирования.
  3. Объекты и их взаимодействие.
  4. Основные принципы ООП.
  5. Вспоминаем С.
  6. Правила оформления кода на С.

11.12.2018. Лекция №14. Рефакторинг (ч.3).

Развернуть

  1. Решение задач обобщения.
  2. Подъем поля (Pull up field).
  3. Подъем метода (Pull up method).
  4. Спуск метода (Push down method).
  5. Спуск поля (Push down field).
  6. Извлечение подкласса (Extract subclass).
  7. Извлечение суперкласса (Extract superclass).
  8. Извлечение интерфейса (Extract interface).
  9. Свертывание иерархии (Collapse hierarchy).
  10. Замена наследования делегированием (Replace Inheritance with delegation).
  11. Замена делегирования наследованием (Replace delegation with inheritance).
  12. Раздувальщики (сode smells).
  13. Длинный метод (Long method).
  14. Большой класс (Large class).
  15. Одержимость элементарными типами (Primitive obsession).
  16. Длинный список параметров (Long parameter list).
  17. Группы данных (Data clumps).
  18. Утяжелители изменений (code smells).
  19. Расходящиеся модификации (Divergent change).
  20. Стрельба дробью (Shotgun surgery).
  21. Замусориватели (code smells).
  22. Комментарии (Comments).
  23. Дублирование кода (Duplicate code).
  24. Мертвый код (Dead code).
  25. Теоретическая общность (Speculate generality).
  26. Опутыватели связями (code smells).
  27. Завистливые функции (Feature envy).
  28. Неуместная близость (Inappropriate intimacy).
  29. Цепочка вызовов (Message chains).
  30. Посредник (Middle man).

04.12.2018. Лекция №13. Рефакторинг (ч.2).

Развернуть

  1. Перемещение функций между объектами.
  2. Перемещение метода (Move method).
  3. Перемещение поля (Move field).
  4. Извлечение класса (Extract class).
  5. Встраивание класса (Inline class).
  6. Сокрытие делегирования (Hide delegate).
  7. Удаление посредника (Remove middle man).
  8. Организация данных.
  9. Замена простого поля объектом (Replace data value with object).
  10. Замена поля-массива объектом (Replace array with object).
  11. Замена однонаправленной связи двунаправленной (Change unidirectional association to bidirectional).
  12. Замена двунаправленной связи однонаправленной (Change bidirectional association to unidirectional).
  13. Замена магического числа символьной константой (Replace magic number with symbolic constant).
  14. Инкапсуляция поля (Encapsulate field).
  15. Инкапсуляция коллекции (Encapsulate collection).
  16. Упрощение условных выражений.
  17. Разбиение условного оператора (Decompose conditional).
  18. Объединение условных операторов (Consolidate conditional expression).
  19. Объединение дублирующихся фрагментов в условных операторах (Consolidate duplicate conditional fragments).
  20. Замена вложенных условных операторов граничным оператором (Replace nested conditional with guard clauses).

27.11.2018. Лекция №12. Рефакторинг (ч.1).

Развернуть

  1. Что такое рефакторинг.
  2. Приемы рефакторинга.
  3. Составление методов.
  4. Выделение метода (Еxtract method).
  5. Встраивание метода (Inline method).
  6. Встраивание переменной (Inline temp).
  7. Расщепление переменной (Split temporary variable).
  8. Замена переменной вызовом метода (Replace temp with query).
  9. Удаление присваиваний параметрам (Remove assignments to parameters).
  10. Упрощение вызовов методов.
  11. Переименование метода (Rename method).
  12. Добавление параметра (Add parameter).
  13. Удаление параметра (Remove parameter).
  14. Разделение запроса и модификатора (Separate query from modifier).
  15. Передача всего объекта (Preserve whole object).
  16. Замена параметров объектом (Introduce parameter object).

06.11.2018. Лекция №10-11. Многопоточность.

Развернуть

  1. Что такое многопоточность?
  2. Средства синхронизации.
  3. std::thread.
  4. std::mutex.
  5. std::condition_variable.
  6. Атомарные операции, std::atomic.
  7. volatile.
  8. std::future.
  9. std::packed_task.
  10. std::async.
  11. std::promise.
  12. Flip-flop буфер.
  13. FIFO на списке блоков.
  14. FIFO на кольцевом буфере.

30.10.2018. Лекция №9. Сборка кода. Библиотеки.

Развернуть

  1. Алгоритм сборки программ на C++. Объектные файлы. Библиотеки.
  2. Динамические библиотеки.
  3. Что такое хорошая библиотека?
  4. Библиотечный подход к решению квадратного уравнения.
  5. Краткое описание самых полезных библиотек для C++: Qt, Boost, OpenCV.
  6. Структурирование исходных файлов в больших проектах.

23.10.2018. Лекция №8. Паттерны проектирования (ч.3).

Развернуть

  1. Паттерн Adapter (Адаптер).
  2. Паттерн Decorator (Декоратор).
  3. Паттерн Proxy (Заместитель).
  4. Паттерн Facade (Фасад).
  5. Паттерн Composite (Компоновщик).
  6. Паттерн Object Pool.
  7. Паттерн Null Object.
  8. Паттерн Servant (Слуга).
  9. Модель MVC.

Действия