Основи програмування в середовищі Lazarus - Стор. 46
Глава 5 Основи програмування
function TStudent.Status: string; begin
Result:=' - студент'; end;
function TStudent.GetData: string; begin
Result:= inherited GetData + ', група '+ group; end;
TProfessor = class(THuman) private
kafedra: string; public
function GetData: string; функція Status: string; override;
function TProfessor.Status: string; begin
Result: = '- викладач'; end;
function TProfessor.GetData: string; begin
Result:= inherited GetData + ', кафедра' + kafedra; end;
Student: TStudent; Professor: TProfessor; fname: string;
Student:= TStudent.Create; fname: = Student.GetData;
writeln(UTF8ToConsole(' Це: ' + fname)); Professor:= TProfessor.Create; Student.name:= 'Віталій';
Student.fam:= 'Петров'; Student.group:=fname:= Student.GetData;
writeln(UTF8ToConsole(' Це: ' + fname));
writeln(UTF8ToConsole(' Це: ' + fname)); writeln(UTF8ToConsole(' Натисніть будь-яку клавішу '));
Під час виконання оператора
спрацює конструктор, визначений нами в класі THuman, оскільки він пе-
Глава 5 Основи програмування
відкриває стандартний конструктор. В результаті поля Fname та Ffam будуть ініціалізовані значеннями 'Андрій' та 'Аршавін'. Після виконання
writeln(UTF8ToConsole(' Це: ' + fname));
на екран буде виведено
"Це: Андрій Аршавін – студент, гурт".
Зверніть увагу, що назва групи виведена не буде. Для ініціалізу-
ції значення поля group необхідно написати конструктор у класі
TStudent, наприкладтаким чином:
Тепер під час виконання оператора
буде викликаний конструктор, визначений у класі TStudent і на екран буде виведено:
"Це: – студент, гурт "Арсенал"".
Ми бачимо, що ім'я та прізвище відсутні. Це знову відбувається того,
що конструктор Create дочірнього класу TStudent перекриває конструк-
тор батьківського класу THuman. Щоб викликати конструктора батьківського класу, необхідно використовувати ключове слово inherited . Таким чином,
реалізацію конструктора класу TStudent необхідно записати у вигляді:
Тепер на екран буде виведено рядок так, як ми хотіли: "Це: Андрій Аршавін – студент, гурт "Арсенал"".
Цілком можливо використовувати конструктори з параметрами. Ось як, на-
Наприклад, може виглядати конструктор з параметрами класу THuman:
constructor Create(n, f: string);
конструктор THuman.Create(n, f: string); begin
Конструктор класу TStudent:
Глава 5 Основи програмування
constructor Create(gr: string);
constructor TStudent.Create(gr: string);
inherited Create('Андрій', 'Аршавін');
Якщо ви зараз викличете конструктор у вигляді
то компілятор "сильно лаятиметься"! Необхідно викликати конструк-
тор таким чином:
Student:= TStudent.Create(''Арсенал'');
Зверніть увагу і на виклик конструктора батьківського класу
inherited Create('Андрій', 'Аршавін');
Оскільки, ми з вами чудово знаємо, що Андрій Аршавін не студент, видо-
Змініть описи класів, щоб на екран виводилося, ну типу: "Андрій Аршавін - футболіст команди Арсенал".
Насамкінець зазначимо, що конструктор створює новий об'єкт тільки в тому випадку, якщо перед його ім'ямвказано ім'я класу. Якщо вказати ім'я вже існуючого об'єкта, він поведеться не створить новий об'єкт,
а лише виконає код, що міститься у тілі конструктора.
Деструктор має стандартне ім'я Destroy і призначений для ніщо-
Destroy – це віртуальний деструктор класу TObject. Тому при перевизначенні деструктора його необхідно оголошувати з ключовим словом override, наприклад:
destructor Destroy; override;
У тілі самого деструктора необхідно викликати батьківський деструктор
(Inherited Destroy). Цим забезпечується формування ланцюжка дест-
рукторів, що сходить до деструктора класу TObject , який і здійснює
ет звільнення пам'яті, зайнятої об'єктом.
Рекомендується замість методу Destroy використовувати метод Free. Цей метод спочатку перевіряє, чи є поточний об'єкт nil і лише, потім викликає метод Destroy . Якщо об'єкти створюються на початку роботи програм-
ми, а знищуються в самому кінці, то застосування методу Free є са-
На цьому ми закінчимо наш короткий екскурс у програмування. У наступному розділі ми ще торкнемося деяких аспектів ООП стосовно створення програм з графічним інтерфейсом.
Докладнішу інформацію про ООП ви можете отримати з [5] та [6]. Хоча
Глава 5 Основи програмування
у цих книгах матеріал викладається стосовно
Turbo Pascal і Delphi , тим не менш, ви можете використовувати їх, особливо
Якщо ви пам'ятаєте, при створенні нашого першого консольного при-
кладання (див. 2.1.10) Lazarus запропонував нам заготівлю коду, який ми з вами просто видалили. Тоді нам цей код був незрозумілий. Ну а тепер…,
тепер ви можете легко розібратися з цим кодом! Lazarus створив длянас заготівлю класу з конструктором та деструктором!
Глава 6 Програмування додатків з
У попередніх розділах ми з вами створювали тільки консольні додатки.
ня. При вивченні основ мови програмування (не тільки Паскаля, а й будь-якої іншої мови), консольні програми є найбільш зручними,
оскільки дозволяють зосередитися на суті тієї чи іншої конструкції чи можливості мови.
Однак, як ви неодноразово мали можливість бачити, інтерфейс поль-
кличка був досить примітивний і мізерний. Здебільшого вдавалося збудувати лише просте меню. Можна, звичайно, ціною значних зусиль, створити в консольному додатку і "пристойніший" інтерфейс. Прикладом може бути IDE самого компілятора FPC.
Але в даний час найбільшу і заслужену популярність завоювання
ла ідея графічного інтерфейсу. Відповідно до цієї ідеї кожна програма робо-
тане у своєму власному вікні. Управління вікнами стандартизовано. Стан-
дартний інтерфейс дуже зручний для користувачів і значно полегшує вивчення різних програмних засобів. Запустіть, наприклад, Word та Excel у Windows або текстовий процесор OpenOffice.org та електронні таб-
особи OpenOffice.org в Linux. Ви побачите багато схожих елементів керування вікнами (кнопки, перемикачі, меню тощо).
Графічний інтерфейс користувача, інакше GUI (Graphics User Interface)
є обов'язковим компонентом більшості сучасних програмних продуктів, орієнтованих працювати кінцевого користувача. Поява графічного інтерфейсу - одне з найважливіших досягнень в області роз-
програмного забезпечення останніх років. Надалі ми будемо використовувати
користуватись як термін "графічний інтерфейскористувача", так і термін

Глава 6 Програмування програм із графічним інтерфейсом
"додаток з GUI" або
Розглянемо коротко деякі елементи графічного інтерфейсу.
6.1. Елементи графічного інтерфейсу
Як уже зазначалося, у додатках з графічним інтерфейсом управління
ня вікнами стандартизовано. Практично всі вікна мають одні і ті ж еле-
менти управління. Розглянемо їх у малюнку 6.1. для операційної системи
Лінійка прокручування Панель інструментів
Мал. 6.1 Елементи вікон Windows
Будь-яке вікно має рядок заголовка, в якому вказується ім'я про-
грами та ім'я документа.
6.1 Елементи графічного інтерфейсу
При натисканні кнопки "Згорнути" активне вікно зменшується до розмірів піктограми та поміщається на панель завдань. Слід пам'ятати, що програма у разі продовжує працювати, але у згорнутому вигляді. При натисканні кнопки
"Розгорнути" вікно розгортається до максимально можливих розмірів. При цьому кнопка "Розгорнути" замінюється на кнопку "Відновити"
Якщо клацнути по цій кнопці, вікно відновить свій початковий розмір. Щоб закрити вікно, натисніть кнопку "Закрити".
Другий рядок вікна називається рядком меню. Якщо клацнути по якомусь пункту, то з'явиться підменю - вертикальне меню в якому можна ви-
брати відповідні команди.
Панель інструментів дозволяє виконувати деякі дії швидше,
використовуючи кнопки на панелі та не звертаючись до пунктів меню. Кнопки на панелі інструментів дублюють деякі команди меню, які найчастіше використовуються.
Лінійка прокручування використовується в тому випадку, коли вся інформація не міститься у вікні. Якщо натиснути на кнопки, то інформація у вікнібуде зрушуватися вгору чи вниз.
Біг показує відносне положення в документі. Наприклад, єс-
Чи бігунок знаходиться вгорі лінійки прокручування, то ви знаходитесь ближче до на-
чалу документа, якщо внизу, то ближче до кінця документа. Можна прокручувати текст і за допомогою бігунка. Для цього треба натиснути на бігунок мишею і, не від-
пускаючи рухати бігунок у потрібному напрямку. Лінійки прокручування бувають вертикальні та горизонтальні.
У вікні кожної програми може знаходитись рядок меню. Це так називають
горизонтальне меню. Кожен пункт цього меню полягає у свою оч-
редь із відповідних підменю – вертикальних меню. Для того щоб від-