
- •1. Основні терміни технології програмування
- •2. Класифікація програмного забезпечення
- •Поняття життєвого циклу розробки програмного забезпечення.
- •Етапи розробки
- •Базові моделі розробки програмних продуктів.
- •Вимоги до методології та технології розробки пп
- •Каскадна модель
- •3. Модель прототипування програмного продукту
- •4. Спіральна модель
- •5. Модель rad
- •6. Модель екстремального програмування (xp)
- •7. Модель msf (Microsoft Solutions Framework)
- •Принципи й види налагодження.
- •Аксіоми налагодження.
- •Автономне налагодження модуля.
- •Комплексне налагодження програмного засобу.
- •Інструменти розробки програмних засобів.
- •Інструментальні середовища розробки й супроводу програмних засобів.
- •Інструментальні середовища програмування.
- •Поняття комп'ютерної технології розробки програмних засобів і її робочі місця.
- •Інструментальні системи технології програмування.
- •Приклад реалізації класу Log.
- •Розробка програмного продукту з двома потоками
- •Визначення крапок контролю програмного продукту.
- •Визначення кількості викликів
- •Визначення ступеня покриття
- •Фундаментальні проблеми профілювання.
- •Причини рефакторингу
- •Підстави для проведення рефакторингу
- •Прийоми рефакторингу
- •Автоматизований рефакторинг
- •1. Принципи повторного використання елементів програм
- •2. Створення шаблонів форм у вигляді файлів
- •3. Використання шаблонів форм у новому проекті
- •4. Збереження шаблонів форм в депозитарії
- •5. Використання шаблонів форм із депозитарію
- •Шаблони класів на мові програмування с#.
- •Приклади шаблонів (класів шаблонів).
- •1. Використання підпрограм в оброблювачах подій
- •2. Звертання до активного компонента не за ім’ям
- •2. Обробка групи компонентів
- •4. Обробка компонентів як масиву
- •5. Сортування даних у компонентах
- •1. Принципи модульного програмування
- •2. Принцип «приховання даних»
- •3. Поняття модуля в Object Pascal
- •4. Структура модульного файлу
- •5. Створення модуля в Object Pascal
- •6. Створення модуля з переліком стандартних діалогів
- •7. Використання текстових констант у модулях
- •8. Створення підпрограм для обробки компонентів
- •1. Поняття dll
- •2. Створення dll бібліотеки в Delphi
- •3. Внесення форм в dll
- •4. Використання dll бібліотеки
- •Питання для самоконтролю
- •Використання регулярних виразів у програмах.
- •1. Призначення зовнішніх компонентів
- •2. Установка й видалення зовнішніх компонентів
- •3. Установка й видалення бібліотек компонентів
- •4. Запуск зовнішніх програм і файлів
- •Питання для самоконтролю
- •1. Загальні принципи технології com
- •2. Робота з com-сервером Microsoft Word
- •Робота з документами в Microsoft Word
- •Використання шаблону для формування документів
- •Робота з таблицями
- •Вставка малюнків і їх форматування
- •1. Операції з Com-Сервером Microsoft Excel
- •Робота із книгами в Microsoft Excel
- •Робота з аркушами книги в Microsoft Excel
- •Використання шаблону для формування книги
- •Формування таблиці
- •6. Форматування чарунок
- •Види довідкових систем
- •Інші засоби підтримки користувача
- •2.Формати довідників
- •3.Створення довідки у форматі html Help
- •4.Створення контекстної довідки
- •5.Інтеграція довідкового файлу в додаток
- •Перелік шаблонів, що породжують
- •Перелік структурних шаблонів
- •Перелік шаблонів поведінки
- •Призначення патерну Singleton
- •Реалізація патерну Singleton
- •Результати застосування патерну Singleton
- •Призначення патерна Observer
- •Постановка проблеми, що вирішується за допомогою патерна
- •Структура патерна Observer
- •Приклад патерна Observer
- •Реалізація патерна Observer
- •Реалізація патерну Observer: до та після
- •Призначення патерну Strategy
- •Опис патерну Strategy
- •Реалізація патерну Strategy
- •Призначення патерна Factory Method
- •Опис патерну Factory Method
- •Реалізація патерна Factory Method
1. Поняття dll
DLL бібліотека, що динамічно приєднується — це спеціального виду файл з розширенням.dll, який використовується для зберігання функцій і ресурсів окремо від файлу, що виконується. Звичайно, коли ви пишете програму й створюєте функції, ресурси й т.і., усі вони компонуються у ваш файл, що виконується. Коли ж ви використовуєте DLL, то викликувані з неї функції використовуються вашим модулем у процесі його виконання. DLL робить корисні, часто використовувані функції доступними відразу для багатьох додатків одночасно, хоча робота ведеться тільки з однієї її копією на диску й у пам'яті. Звичайно DLL не завантажується у пам’ять, поки це не стане необхідним, але, будучи одного разу завантажена, вона робить свої функції й ресурси доступними для будь-якої програми.
Припустимо, ви розробили різні корисні процедури й функції й використовуєте їх у різних своїх додатках. Звичайно, ви можете просто скопіювати ці процедури й функції в кожен ваш проект. Але тоді, якщо кілька ваших додатків працює на комп'ютері одночасно, то для кожного додатка у пам’ять завантажуються копії ваших процедур й пам'ять, таким чином, витрачається неефективно. Та й витрати простору на дисках також надлишкові, оскільки ці процедури в складі виконуваних модулів також тиражуються. Якщо ж ви помістили свої процедури в DLL, то всі ці проблеми знімаються.
Створення DLL підвищує також гнучкість вашої програми. Наприклад, ви можете створити кілька бібліотек, що містять усі використовувані вашим додатком тексти — написи, підказки й т.і. Кожна із цих бібліотек може містити тексти на тій або іншій мові: російській, англійській, німецькій. Тоді залежно від того, яку із цих бібліотек буде застосовувати користувач, програми будуть «спілкуватися» з ним на потрібній мові.
За допомогою DLL ви можете полегшити собі модифікацію ваших додатків. Нехай ви реалізували якісь свої функції звичайним образом, включивши їх у додаток і розіславши цей додаток користувачам. А потім з'явилися якісь нові можливості, які могли б розширити ваші функції. Наприклад, з'явилися нові формати файлів, на які можна було б настроїти ваші функції. Щоб реалізувати ці нові можливості, вам доведеться переписати колишні функції, скомпілювати новий додаток і розіслати всім вашим користувачам. А якщо ви реалізували функції у вигляді DLL, то перекомпіляція додатків не буде потрібною. Досить створити нову невелику DLL з тим же ім'ям і тими ж іменами функцій, реалізованих по-новому, і розіслати користувачам тільки цю нову DLL.
Ще однією перевагою DLL є те, що вони можуть використовуватися додатками, написаними на інших алгоритмічних мовах. Наприклад, ви можете використовувати бібліотеки, написані на C++, Visual Basic, Access Basic і ін. А ваші бібліотеки, створені в Delphi, зможуть використовувати будь-які системи, які вміють викликати DLL, незалежно від того, на яких алгоритмічних мовах вони написані.
Бібліотеки DLL можуть зв'язуватися з вашим додатком двома шляхами: статичним зв'язуванням або динамічним зв'язуванням.
Статичне зв'язування означає, що DLL завантажується відразу, як тільки починає виконуватися додаток, який буде її використовувати. Це найбільш простий спосіб використання DLL. Виклик функцій у додатку, що використовує подібну DLL, майже не відрізняється від виклику будь-яких інших функцій. Деякими недоліками такого підходу можна вважати збільшення часу завантаження вашого додатка (адже крім виконуваного модуля додатка в цей момент вантажаться також модулі відповідних DLL) і неможливість виконання додатка користувачем, у якого немає відповідного файлу DLL. Останнє важко назвати істотним недоліком, оскільки, звичайно, ви повинні поширювати додаток разом з DLL. Але ж деякі дії додаток міг би робити й без DLL, тобто він міг би в урізаному вигляді функціонувати й при відсутності DLL. Однак при статичному зв'язуванні це неможливо. Ще одним недоліком статичного зв'язування є те, що DLL займає пам'ять увесь час, протягом якого виконується додаток, незалежно від того, викликаються в даному сеансі роботи з додатком якісь функції бібліотеки, чи ні.
Динамічне зв'язування відрізняється від статичного тим, що бібліотека DLL завантажується тільки в той момент, коли необхідно виконати якусь функцію, що зберігається в ній. Потім цю бібліотеку можна вивантажити з пам'яті. Це забезпечує, звичайно, більш ефективне використання пам'яті. Але зате виклик відповідних функцій бібліотеки суттєво ускладнюється, та й час виклику теж збільшується через необхідність завантажувати й вивантажувати бібліотеку.