
- •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
7. Використання текстових констант у модулях
Якщо розроблювач хоче, щоб у його програмах використовувалися однакові повідомлення, текстові написи й інші текстові позначення, то можна стандартизувати такі повідомлення за допомогою текстових констант.
Для цього в розділі Interface модуля відразу після розділу Uses описуємо потрібну кількість констант у вигляді:
const
ім'я1=’значення’;
ім'я2=’значення’;
. . .
ім’яn=’значення’;
Для використання такої константи команду видачі діалогу потрібно записати так:
application.messagebox(pchar(ім'я1), pchar(ім'я2), прапори)
Приклад. Створити модуль, який містить текстові константи для діалогів очищення даних і виходу із програми.
Нехай модуль має ім'я Titleunit. У модулі немає підпрограм, тому підключення додаткових модулів не потрібно
unit titleunit;
interface
const
clear_text=’Очистити дані?’;
clear_title=’Підтвердьте операцію’;
exit_text=’Вийти із програми?’;
exit_title=’Підтвердьте вихід’;
implementation
end.
Збережіть файл під ім'ям titleunit.pas.
Перепишемо створений раніше модуль zapros.pas з використання текстових констант.
unit zapros;
interface
//підключаємо модуль titleunit
uses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, stdctrls, titleunit;
//указуємо заголовки підпрограм
function clear_data:boolean; //функція очищення даних
function exit:boolean; //функція виходу
implemenmtation
//код реалізації підпрограм
//функція діалогу очищення даних даних
function clear_data:boolean;
begin
if application.messagebox(pchar(clear_text), pchar(clear_title), mb_yesno + mb_iconquestion + mb_defbutton2)=idyes then
clear_data:=true
else
clear_data:=false;
end;
//функція діалогу виходу із програми
function exit:boolean;
begin
if application.messagebox(pchar(exit_text), pchar(exit_title), mb_yesno + mb_iconquestion + mb_defbutton2)=idyes then
exit:=true
else
exit:=false;
end;
end.
Надалі, якщо потрібно поміняти текст у діалогах програми, достатньо відкрити модуль titleunit.pas, внести зміни в значення текстових констант і заново відкомпілювати проект програми.
8. Створення підпрограм для обробки компонентів
Якщо підпрограма модуля призначена для обробки компонентів, то така підпрограма обов'язково повинна мати вхідний параметр – змінну-форму.
Такий параметр описується так:
ім'я: tform;
При цьому звертання до компонентів на формі записується так:
tтип_компонента(ім'я.controls[i]) //звертання до компонента з номером i
tтип_компонента(ім'я.activecontrol) //звертання до активного компонента
Приклад. У модуль zapros.pas додати підпрограму-функцію для визначення максимального значення в масиві полів.
На формі може розташовуватися довільне число різнотипних компонентів, тому поля масиву потрібно якось відокремити. Це можна зробити, привласнюючи їм однакове значення у властивості tag. Значення цієї властивості буде першим параметром підпрограми.
Для звертання до компонентів другим параметром підпрограми буде змінн-форма.
У розділі Interface модуля додамо заголовок підпрограми-функції.
function max_min(n:integer; f:tform):real;
У розділі Implementation напишемо код реалізації підпрограми.
//функція визначення максимального
function max_mas(n:integer; f:tform):real;
var rez:real; i:integer;
begin
//спочатку максимум нескінченно малий
rez:=-100000;
//у циклі проходимо по всіх компонентах форми
for i:=0 to f.controlcount-1 do
//якщо i-й компонент поле (тільки поля масиву мають tag =n)
if f.controls[i].tag=n then
//якщо i-й компонент-поле не порожній
if tedit(f.controls[i]).text<>'' then
//якщо значення i-го компонента більше максимуму
if rez<strtofloat(tedit(f.controls[i]).text) then
//запам'ятовуємо це поле як максимальне
rez:=strtofloat(tedit(f.controls[i]).text);
//якщо результат не нескінченно малий (були введені дані)
if rez<>-100000 then
//функції присвоюємо результат
max_mas:=rez
//інакше, якщо результат нескінченно малий (немає введених даних)
else
//функції присвоюємо 0
max_mas:=0;
end;
Нехай є форма Form1 з 10 текстовими полями масиву й полем Edit11 для відповіді. Усі поля масиву мають властивість Tag=1. На формі є кнопка, яка визначає максимальне значення масиву й записує його в поле Edit11.
Скопіюйте файл модуля zapros.pas у папку із програмою. У коді форми підключіть модуль zapros.
Для кнопки напишіть код:
procedure Tform1.Button1Click(Sender: Tobject);
begin
//параметри підпрограми задаються так:
//1 – значення властивості tag полів масиву
//form1 – ім'я форми, на якій розташований масив
edit11.text:=floattostr(max_mas(1,form1));
end;
Питання для самоконтролю
1. В чому перевага модульного програмування?
2. Дайте характеристику принципу "інформаційної закритості даних" в модулях.
3. Дайте визначення модуля в Onject Pascal.
4. Яку структуру має модуль в Object Pascal?
5. Опишіть розділ Interface модуля в Object Pascal.
6. Опишіть розділ Implementation модуля в Object Pascal.
7. Опишіть принцип створення і використання модуля в Object Pascal.
8. Як в модулі описати текстові константи?
9. Які особливості має принцип створення в модулі підпрограм для обробки компонентів?
10. Приведіть приклад підпрограми знаходження суми текстових полів на формі.
Лекція №10
Тема: Створення бібліотек та сервісів.
Мета: Придбання знань зі створення статичних та динамічних бібліотек. Використання бібліотек при розробці програм.
Перелік питань, що розглядаються на лекції:
1. Поняття DLL
2. Створення DLL бібліотеки в Delphi
3. Внесення форм в DLL
4. Використання DLL бібліотеки