Предварительная подготовка
Базовые знания языка C++
Базовые знания CMake, GTest, Git
Знание принципов объектно-ориентированного программирования
Опыт работы с объектно-ориентированными языками от 1 года
Желательно: знакомство с UML
Для кого
Разработчик
Улучшаемые навыки
C++
Программирование
Шаблоны проектирования
GoF
STL
ООП
Разработка ПО
С++17
С++20
Паттерны
Алгоритмы
Контейнеры
Инструменты
Программа курса
01
Функциональные объекты
Лямбда-функции
Функциональные объекты
Примеры использования
Практическое задание: Создание и использование функциональных объектов
02
Контейнеры последовательности
Векторы
Списки
Деки
Стеки
Очереди
Приоритетные очереди
Упорядоченные ассоциативные контейнеры
Практическое задание: Использование контейнеров последовательности
Практическое задание: Использование адаптеров контейнеров
Практическое задание: Использование упорядоченных ассоциативных контейнеров.
Виды итераторов
Операции с итераторами
Примеры использования
Практическое задание: Использование итераторов
Обзор алгоритмов
Классификация алгоритмов
Примеры использования
Немодифицирующие алгоритмы
Модифицирующие алгоритмы
Сортировка и поиск
Численные алгоритмы
Практическое задание: Использование разных алгоритмов
05
Тест по темам «Стандартная библиотека шаблонов C++»
06
Паттерны проектирования
Введение в паттерны проектирования
Принципы хорошего дизайна программной системы (SOLID)
Понятие паттерна проектирования
Метамодель паттерна проектирования
Элементы паттерна проектирования
Практическое задание: Анализ и применение принципов SOLID
Composite
Decorator
Proxy
Adapter
Flyweight
Bridge
Facade
Практическое задание: Реализация структурных паттернов
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Практическое задание: Реализация порождающих паттернов
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
Практическое задание: Реализация поведенческих паттернов
10
Современные возможности C++17 и C++20
Новые возможности C++17 (type traits)
Новые возможности C++20 (concept)
Примеры использования новых возможностей
Практическое задание: Использование новых возможностей C++17 и C++20
11
Работа с потоками и асинхронное программирование
12
Итоговый тест по всем темам курса
13
Итого на курс 62 часа: теория – 39 ч (62 %), практика – 23 ч ( 37%)
Чему вы научитесь
01
Описывать понятие паттернов и принципы их использования.
02
Анализировать проблемы и преимущества проектирования на базе повторного использования кода.
03
Разрабатывать приложения на базе паттернов.
04
Применять классы и утилиты STL в реальных задачах.
05
Понимать философию STL и её применение.
06
Исследовать исходники STL и анализировать их работу.
07
Измерять производительность кода с использованием инструментов STL.
08
Выбирать подходящие инструменты STL для решения конкретных задач.
09
Реализовывать структурные, порождающие и поведенческие паттерны.
10
Интегрировать паттерны проектирования в свои проекты.