Вартість курсу: 5 000 грн. на місяць Тривалість курсу: 3 місяці, 67 астрономічних годин Дата початку курсу:уточнюйте дату у менеджерів Вимоги до слухачів: знання тем курсу «Основи програмування на C++»
Як при додаванні нових полів до структури (або при наслідуванні від неї) додати можливість сортування цих структур за цими новими полями без перекомпіляції алгоритму сортування. (тобто як не створювати собі в майбутньому зайву роботу). Предикативні функції.
Як використовувати чужий алгоритм (інтерфейс) для обробки своїх типів даних.
Шаблонні функції
Правила визначення параметрів типів, можливість наведення типу, перевантаження.
Функції з невизначеною кількістю параметрів
Навіщо потрібний перший параметр, робота з різнотипними параметрами.
Класи
Правило ініціалізації членів класу, функціональності за замовчуванням та їх заборона, конструктори, деструктори, ресурси та принцип роботи з ними, як об'єкт може ідентифікувати себе серед інших - це. public, private, наявність у класі об'єктів іншого класу чи покажчиків, час життя об'єктів, що взаємодіють, композиція - обізнаність та агрегування.
Друзі класу
Як функції або класу стати другом іншого класу.
Взаємини між класами-друзями, попереднє оголошення.
Як уникнути перехресних посилань та неодноразового оголошення типів, директиви #ifndef, #pragma.
Конструктор копіювання
Чи завжди він потрібен, дрібне та глибоке копіювання, як копіювати об'єкт усередині якого є об'єкт іншого класу.
Правила навантаження. Використання шаблонів. Діагностика
Константність у класах, 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.
Перекидання винятків, 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.
Правила написання кросплатформної програми 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), блокуючі та неблокуючі режими.
Робота з базами даних
Створення бази, таблиці, запити - багатотабличні, вкладені, функції агрегування, зовнішні ключі, процедури, що зберігаються.
Дипломний проект:
Створення плагіна, що дозволяє додати нову функціональність до вже наявної програми.
Програма підтримує кросплатформеність на рівні вихідних - вся робота з ресурсами («залізом») виділена в окремі блоки, що заміняються, специфічними для конкретної платформи.
Записатися
Будь ласка, заповніть форму. Наші менеджери зв'яжуться з Вами найближчим часом.