Вартість курсу: 5 000 грн. на місяць
Тривалість курсу: 3 місяці, 67 астрономічних годин
Дата початку курсу: уточнюйте дату у менеджерів
Вимоги до слухачів: знання тем курсу «Основи програмування на C++»

*Курс доступний мовами: українська, російська, англійська

Професійне програмування на C++

Програма курсу
Вказівники на функції
  • Адаптування інтерфейсів, callback функції, typedef.
  • Як при додаванні нових полів до структури (або при наслідуванні від неї) додати можливість сортування цих структур за цими новими полями без перекомпіляції алгоритму сортування. (тобто як не створювати собі в майбутньому зайву роботу). Предикативні функції.
  • Як використовувати чужий алгоритм (інтерфейс) для обробки своїх типів даних.
Шаблонні функції
  • Правила визначення параметрів типів, можливість наведення типу, перевантаження.
Функції з невизначеною кількістю параметрів
  • Навіщо потрібний перший параметр, робота з різнотипними параметрами.
Класи
  • Правило ініціалізації членів класу, функціональності за замовчуванням та їх заборона, конструктори, деструктори, ресурси та принцип роботи з ними, як об'єкт може ідентифікувати себе серед інших - це. public, private, наявність у класі об'єктів іншого класу чи покажчиків, час життя об'єктів, що взаємодіють, композиція - обізнаність та агрегування.
Друзі класу
  • Як функції або класу стати другом іншого класу.
  • Взаємини між класами-друзями, попереднє оголошення.
  • Як уникнути перехресних посилань та неодноразового оголошення типів, директиви #ifndef, #pragma.
Конструктор копіювання
  • Чи завжди він потрібен, дрібне та глибоке копіювання, як копіювати об'єкт усередині якого є об'єкт іншого класу.
  • Виклик конструкторів, деструкторів, перевантаження.
Перевантаження операторів +, =, <<, (type cast), ->, * (розіменування), new, ++, !=, [], функтор)
  • Правила навантаження. Використання шаблонів. Діагностика
Константність у класах, const_cast, mutable
  • Що таке справжня константа та readonly field. volatile (потоки та оптимізація компілятора).
  • Чи потрібно змінювати константу та як працювати з константними об'єктами.
Статичні члени класу, private конструктор, патерн Singleton
  • Як заборонити створення об'єкта на стеку, підрахунок об'єктів даного класу, що робити, якщо об'єкт якогось класу в програмі повинен бути лише один.
  • успадкування
  • Відмінність між розширенням функціоналу та успадкуванням інтерфейсу.
  • Як ініціалізується об'єкт спадкоємця.
  • Робота з покажчика на базовий клас. protected члени класу та private, protected успадкування.
Поліморфізм
  • Віртуальні функції, деструктор, абстрактний базовий клас, інтерфейс, vptr, vtbl, раннє та пізнє зв'язування, механіка виклику віртуальної функції. dynamic_cast, typeid, RTTI. У яких випадках віртуальний деструктор не врятує.
  • Що таке ABI (Application Binary Interface). Вирівнювання даних (alignment).
Патерни проектування
  • Реалізація та використання патернів: Bridge, Abstract Factory, Visitor, Observer, Decorator, Chain Of Responsibility, MVC, Singleton, Adapter, Builder.
Шаблонні класи
  • hpp файли, конструктор копіювання на основі інших параметрів типу.
  • Спеціалізація шаблонів.
Динамічні структури даних
  • Зв'язкові списки, дерева, черги, стек, написання класу Tree.
STL
  • Створення класу List, що підтримує інтерфейс STL (ітератори, оператори, функції-члени).
  • Контейнери: std::vector, list, deque, map, set. Робота з ітераторами під час зміни розміру вектора. std::vector із вказівниками на об'єкти. hash, порівняння алгоритмів (Big O Notation).
  • Алгоритми: find, copy, find_if, remove, equal_to, bind2nd і т.д.
  • Простір імен.
BOOST
  • Знайомство з BOOST (як його скомпілювати та налаштувати проект), boost::bind, вся бібліотека smart_ptr.
  • boost::thread (mutex, condition_variable, lock_quard, unique_lock), chrono, filesystem.
Обробка виняткових ситуацій
  • Архітектура програми, яка використовує винятки.
  • Перекидання винятків, catch(...), catch(BaseЕхсeptionClass &), правила розмотування стека, час життя об'єкта виключення, що викидається.
Розумні покажчики
  • std:: та boost:: shared_ptr, weak_ptr, make_shared, auto_ptr, std::unique_ptr.
  • С++ 11
  • Ознайомлення з IDE QtCreator. лямбди, посилання на rvalue та movable конструктор (а також копіювання, привласнення), auto, noexcept, std::thread, std::lock_guad, std::move()
Множинне успадкування
  • Віртуальне успадкування, різницю між компіляторами.
  • Основи СОМ: IUnknown, правила приведення типу в QueryInterface, реєстрація компонента regsvr32, CLSID.
  • Інтерфейс та класи-адаптери.
Динамічні та статичні бібліотеки (Windows/Linux)
  • Підключення до проекту, командний рядок gcc (g++) компілятора. .dll, .lib, .so, .a, явне та неявне зв'язування, експорт функцій, класів, експорт інтерфейсу (абстрактного класу), debug.
Правила написання кросплатформної програми
GUI - віконні програми на прикладі Win32 API і Qt
  • Вічний цикл, повідомлення, віконна процедура, Send-PostMessage та їх відмінності.
  • Робота з елементами управління: BUTTONs (radio, check, groupbox), СOMBOBOX, EDІТ і т.д. Що таке події та слоти (зокрема в Qt) – заміна віконної процедури, переміщення точки початку промальовування, створення свого елемента управління, OWNERDRAW.
Процеси, потоки (Windows/Linux/C++11)
  • Адреса, синхронізація на прикладі Win32, std:: і BOOST.
  • Список процесів, м'ютекси, семафори, події, очікувані таймери, обмін даними між процесами, boost::thread, (порівняння з std::thread), TLS, condition_variable, lock_quard, unique_lock.
Створення мережної програми (Windows/Linux)
  • Cокети, протоколи (TCP, UDP), блокуючі та неблокуючі режими.
Робота з базами даних
  • Створення бази, таблиці, запити - багатотабличні, вкладені, функції агрегування, зовнішні ключі, процедури, що зберігаються.
Дипломний проект:
  • Створення плагіна, що дозволяє додати нову функціональність до вже наявної програми.
  • Програма підтримує кросплатформеність на рівні вихідних - вся робота з ресурсами («залізом») виділена в окремі блоки, що заміняються, специфічними для конкретної платформи.
Записатися
Будь ласка, заповніть форму. Наші менеджери зв'яжуться з Вами найближчим часом.
Made on
Tilda