 
        
        - •Лекція №1.
- •Тема 1. Історичний і соціальний контекст програмування. Загальні принципи розробки програмних продуктів.
- •2. Застосування функцій Application Program Interface (api) для розробки програм для Windows.
- •3. Загальні відомості про об’єктно-орієнтоване програмування та автоматизацію проектування, програми програмування для Windows.
- •Лекція №2.
- •Тема 2. Введення у програмне середовище візуального програмування
- •Властивості компонентів.
- •Лекція №3.
- •2. Застосування модулів при програмуванні. Загальний вміст файлу модуля Unit1.Cpp .
- •Лекція №4.
- •Тема 4. Візуальне програмування компонентів при створенні програми.
- •Структура vcl.
- •Клас tObject.
- •Клас tPersistent.
- •Клас tComponent.
- •Клас tControl.
- •Клас tForm.
- •Клас tTimer.
- •Клас tStrings.
- •Клас tStringList.
- •Клас tFont.
- •Властивості.
- •Значення властивостей.
- •Типи властивостей.
- •Методи.
- •Лекція №5.
- •Тема 5. Подійно-орієнтована взаємодія між компонентами при створенні програми.
- •1. Взаємодія між компонентами та діями користувача при створенні програми та подальшого її використання.
- •2. Характеристика основних подій що виникають з об’єктами: OnActivate, OnClose, OnCreate, OnDestroy, OnHide, OnPaint, OnResize, OnShow, OnClick, OnDblClick, OnMouseDown, OnKeyDown, OnEnter та інші.
- •Лекція №6.
- •2. Змінні. Типизовані константи. Класифікація типів даних. Об’ява типів.
- •Модифікатори.
- •Користувацькі типи.
- •Розмір об’єктів.
- •3. Програмна схема опрацювання подій. Перетворення типів даних.
- •Зведення типів.
- •Основні визначення.
- •Області видимості змінних.
- •Правило одного визначення.
- •Лекція№ 7.
- •Тема 7. Об’єктно-орієнтований підхід до класів.
- •1. Об’єктно-орієнтований підхід. Об’єкт.
- •2. Взаємозв’язки об’єктів, класів. Поля та методи класів. Статичні, динамічні методи. Класи. Об’ява класу. Модель вказників. Методи. Події та вказники на методи.
- •3. Три групи методів. Інкапсуляція. Спадковість. Поліформізм. Конструктори і деструктори.
- •Розробка класів.
- •Поняття про конструктори і деструктори.
- •Лекція № 8.
- •Тема 8. Обробка виняткових ситуацій.
- •Механізм обробки виняткових ситуацій.
- •Обробка виняткових ситуацій.
- •2. Застосування виняткових ситуацій. Протоколювання виняткових ситуацій. Коди помилок в виняткових ситуаціях. Виняткова ситуація eAbort. Функція Assert.
- •Ієрархія виняткових ситуацій.
- •Тотальне перехоплення виняткових ситуацій.
- •Генерація виняткових ситуацій
- •Повторні виняткові ситуації.
- •Непередбачені виняткові ситуації.
- •Лекція № 9.
- •Тема 9. Візуальні компоненти бібліотеки vcl.
- •1. Бібліотека візуальних компонент vcl і її базові класи. Ієрархія базових класів. Класи: tObject, tPersistent, tComponent.
- •Візуальні та невізуальні компоненти.
- •2. Класи елементів керування: tControl, tWinControl, tCustomControl, tGraphicControl.
- •Клас форм tForm. Форми для головного вікна.
- •Форми для діалогових, інформаційних та інших вторинних вікон.
- •Модальні та немодальні вікна.
- •Основні властивості компонентів (форми).
- •Властивості, що доступні під час розробки та виконання програми.
- •Властивості, що доступні тільки під час виконання програми.
- •Основні методи компонентів (форми).
- •Основні події компонентів (форми).
- •Лекція № 10. Компоненти для введення та редагування тексту.
- •1. Клас tStrings. Властивості Text, Lines, Items.
- •2. Методи для роботи і текстом: AddString, AddObject, Assing, Equals, Delete, Move, IndexOf, Pos.
- •Введення та відображення цілих чисел.
- •Багаторядкові вікна редагування.
- •Компоненти вибору зі списків.
- •Компоненти – меню.
- •Панелі та компоненти зовнішнього оформлення.
- •Панелі загального призначення.
- •Багатосторінкові панелі.
- •Рядок стану.
- •Організація управління додатком. Список зображень.
- •3. Конструкції коду для обмеження типів символів. Конструкції коду для створення комбінацій клавіш.
- •Лекція № 11.
- •1. Принципи побудови баз даних.
- •Локальні і віддалені бази даних.
- •Створення форми для роботи з базами даних (вручну).
- •Створення форми для роботи з базами даних (майстром).
- •Створення бази даних.
- •Лекція № 12.
- •Тема 12. Створення баз даних за допомогою Database Desktop.
- •1. Створення нової таблиці. Задання полів. Задання властивостей таблиці. Створення псевдонімів баз даних у Database Desktop.
- •Створення нової таблиці.
- •2. Створення та редагування псевдонимів баз даних та каталогів.
- •Лекція № 13.
- •Тема 13. Компоненти, що використовуються у bde для зв’язку з базами даних.
- •Механізм доступ до бази даних. Псевдоніми dbe.
- •Компоненти доступу до баз даних.
- •Лекція № 14
- •Тема 14. Народження дочірніх процесів.
- •1. Потоки та клас tThread. Властивості класу.
- •2. Методи класу: DoTerminate, Execute, Resume, Suspend, Synchronize, Terminate, WaitFor. Технологія com.
- •Запуск зовнішньої програми функцією execlp.
- •Запуск зовнішньої програми функцією spawnlp.
- •Породження процесу функцією CreateProcess.
- •Лекція №15
- •Тема 15. Побудова багатовіконних програм.
- •1. Приклади розробки програми переглядання текстових файлів, графічних файлів, та відображення показів годинника.
- •2. Розробка графічного інтерфейсу користувача. Вимоги до інтерфейсу користувача додатків для Windows.
- •Багатовіконні додатки.
- •Стиль вікон додатку.
- •Колірне рішення додатку.
- •Шрифти текстів.
- •Лекція № 16.
- •Тема 16. Кросплатформне програмування для Linux.
- •1. Проект clx. Об’єктна концепція кросплатформного програмування. Бібліотека компонент clx. Подібність та різність візуальних компонент clx і vcl.
- •На рівні мови програмування.
- •На рівні прикладних програм.
- •Компонента модель .Net Framework. Типи компонентів.
- •Динамічна бібліотека dll як приклад компонента.
Ієрархія виняткових ситуацій.
Оскільки виняткова ситуація може бути об'єктом класу, у мові С++ існує можливість створювати ієрархію виняткових ситуацій. У цьому випадку блок catch перехоплює об'єкти не тільки базового, але і похідних класів. При генерації похідних виняткових ситуацій це приводить до непорозумінь — їх перехоплює блок catch, призначений для обробки базових виняткових ситуацій.
Тотальне перехоплення виняткових ситуацій.
Іноді ретельна деталізація виняткових ситуацій не потрібна. Наприклад, у попередніх прикладах їх обробка проводилася майже однаково, за винятком супутніх повідомлень про помилки. Отже, було б зручно, якби блок catch можна було настроїти на будь-яку виняткову ситуацію. Зробити це дозволяє наступна конструкція.
catch(...)
{
// Перехоплення усіх виняткових ситуацій
}
Трикрапка в дужках означає, що блок catch здатний перехопити й обробити будь-яку виняткову ситуацію.
Генерація виняткових ситуацій
Оголошуючи функцію, можна перелічити типи виняткових ситуацій, що їй дозволено генерувати. Типи виняткових ситуацій, не включені в список, функція генерувати не зможе. Спроба порушити це обмеження приведе до негайного припинення роботи програми за допомогою ланцюжка викликів стандартних функцій:
unexpected() — abort().
Якщо список порожній, функція взагалі не повинна генерувати ніяких виняткових ситуацій.
Для оголошення списку дозволених виняткових ситуацій використовується наступна синтаксична конструкція:
тип_ щоповертається_значення ім'я_функції(аргументи) throw(виняткові ситуації)
{
// ...
}
Повторні виняткові ситуації.
Іноді зручно обробляти виняткову ситуацію в декількох розділах catch, ніби передаючи її по конвеєру.
Уявимо собі, що на першому етапі оброблювач просто констатує наявність проблеми і пропонує користувачу вирішити, що робити — намагатися виправити чи помилку припинити роботу програми. Якщо програміст вирішить продовжувати роботу, необхідно згенерувати ситуацію знову й ужити заходів, що дозволяють врятувати положення. Якщо ж програміст вирішить припинити роботу програми, викликається відповідна чи функція виконується оператор return.
Непередбачені виняткові ситуації.
Для того щоб реагувати на виняткові ситуації, обробка яких програмістом не передбачена, у мові С++ використовуються функції terminate() і unexpected(), оголошені в заголовку <exception>, а також функція abort(), прототип якої міститься в заголовках <process.h> і <stdlib.h>.
Механізм роботи цих функцій виглядає в такий спосіб. Виняткова ситуація, що не перехопив жодний оператор catch, передається нагору по ланцюжку викликів. Якщо вона не обробляється в жодному з модулів виклику, викликається terminate(), що за замовчуванням викликає функцію abort(). Такі виняткові ситуації називаються непередбаченими (unexpected).
С допомогою стандартних засобів простежити, коли і які функції викликаються, неможливо. Звичайно вважається, що спочатку викликається функція unexpected(), що автоматично викликає функцію terminate(), а та у свою чергу — функцію abort() за замовчуванням. На щастя, у мові С++ існує механізм заміни функцій terminate() і unexpected() власними оброблювачами непередбачених ситуацій. Для цього призначені функції set_terminate() і set_unexpected(), специфікація яких міститься в заголовку <exception>.
new_unexpected set_unexpected(new_unexpected) throw();
new_terminate set_terminate(new_terminate) throw();
Ідентифікатори new_unexpected і new_terminate — імена нових оброблювачів. Аргументами функцій set_unexpected() і set_terminate() є вказівники на ці оброблювачі. Оскільки цими вказівниками автоматично є імена нових функцій, синтаксична конструкція виглядає досить просто. Одержуючи адресу нового оброблювача, функції set_unexpected() і set_terminate() повертають адреси старих оброблювачів. Це дозволяє зберегти їх у пам'яті і відновити при необхідності стару систему обробки непередбачених ситуацій. Заступники функцій unexpected() і terminate() не повинні повертати керування програми. Вони зобов'язані поводитися, як їхні прототипи.
