Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторні роботи_ООП.doc
Скачиваний:
0
Добавлен:
01.01.2020
Размер:
7.3 Mб
Скачать

Завдання

1. Записати опис структури класу із трьома полями довільних типів, клас походить від класу:

1-5. TObject

6-10. TPersistent

11-15. TComponent

16-20. TControl

21-25. TWinControl

26-30. TCustomControl

2. Здійснити опис трьох довільних полів класу ( клас згідно варіанту завдання 1).

3. Здійснити опис трьох довільних властивостей класу ( клас згідно варіанту завдання 1).

Теоретичні відомості

В мові Object Pascal класи є спеціальними типами даних і використовуються для опису об'єктів. Відповідно об'єкт, що має тип якого-небудь класу, є екземпляром цього класу або змінною цього типу. Клас є особливим типом запису, має в своєму складі такі елементи (члени), як поля, властивості і методи. Поля класу аналогічні полям запису і служать для зберігання інформації про об'єкт. Методами називаються процедури і функції, призначені для обробки полів. Властивості займають проміжне положення між полями і методами. З одного боку, властивості можна використовувати як поля, наприклад, привласнюючи їм значення за допомогою оператора привласнення; з другого боку, усередині класу доступ до значень властивостей виконується методами класу.

Опис класу має наступну структуру:

Туре <Ім’я класу> = class (<Ім’я батьківського класу>)

private

<Приватні описи>;

protected

<Захищені описи>;

public

<Загальнодоступні описи>;

published

<Опубліковані описи>;

end;

В приведеній структурі описами є оголошення властивостей, методів і подій.

Приклад. Опис класу.

type

TColorCircle = class(TCircle);

FLeft

FTop

FRight

FBottom: Integer;

Color: TColor;

end;

Тут клас TColorCircle створюється на основі батьківського класу TCircle. В порівнянні з батьківським, новий клас додатково містять чотири поля типа integer і одне поле типу TColor.

Якщо як батьківське використовується клас Tobject, який є базовим класом для всіх класів, то його ім'я після слова class можна не указувати. Тоді перший рядок опису виглядатиме так:

type TNewClass = class

Об'єкти як екземпляри класу оголошуються в програмі в розділі var як звичайні змінні. Наприклад

var

CCirclel: TColorCircle;

CircleA: TCircle;

Як і у разі записів, для звернення до конкретного елемента об'єкту (полю, властивості або методу) указується ім'я об'єкту і ім'я елемента, розділені крапкою, тобто ім'я елемента є складовим.

Приклад. Звернення до полів об'єкту.

var

CCirclel: TColorCircle;

Begin

. . .

CCirclel.FLeft:=5;

CCirclel.FTop:=1;

. . .

end;

Тут приведено безпосереднє звернення до полів об'єкту, звичайно це робиться за допомогою методів і властивостей класу.

Поле класу є даними, що містяться в класі. Поле описується як звичайна змінна і може належати до будь-якого типу. Приклад. Опис полів.

type TNewClass = class(TObject)

private

FCode: integer;

FSign: char:

FNote: string;

end;

Тут новий клас TNewClass створюється на основі базового класу Tobject і одержує на додаток три нові поля Fcode, FSign і FNote, має, відповідно, цілочисельний, символьний і рядковий типи. Згідно прийнятій угоді, імена полів повинні починатися з префікса f (від англ. Field - поле).

Властивості реалізують механізм доступу до полів. Кожній властивості відповідає поле, що містить значення властивості, і два методи, що забезпечують доступ до цього поля. Опис властивості починається із слова property, при цьому типи властивості і відповідного поля повинні співпадати. Ключові слова read і write є зарезервованими усередині оголошення властивості і служать для вказівки методів класу, за допомогою яких виконується читання значення поля, пов'язаного з властивістю, або запис нового значення в це поле.

Приклад. Опис властивостей.

type TNewClass = class(TObject)

private

FCode: integer;

FSign: char:

FNote: string;

published

property Code: integer read FCode write FCode;

property Sign: char read FSign write FSign;

property Note: string read FNoter write FNote;

Для доступу до полів Fcode, FSign і Fnote, які описані в захищеному розділі і неприступні іншим класам, використовуються властивості code, sign і Note, відповідно.

Метод є підпрограмою (процедуру або функцію), що є елементом класу. Опис методу схожий на опис звичайної підпрограми модуля. Заголовок методу розташовується в описі класу, а сам код методу знаходиться в розділі реалізації. Ім'я методу в розділі реалізації є складовим і включає тип класу.

Наприклад, опис методу Button1Click виглядатиме так:

Interface

. . .

type

TForml = class(TForm)

Buttonl: ТВutton;

procedure ButtonlClick(Sender: TObject);

end;

. . .

implementation

. . .

procedure TForml.ButtonlClick(Sender: TObject);

begin

Close;

end;

Метод, оголошений в класі, може викликатися різними способами, що залежить від виду цього методу. Вид методу визначається модифікатором, який указується в описі класу після заголовка методу і відділяється від заголовка крапкою з комою. Приведемо деякі модифікатори: virtual – віртуальний метод; dynamic – динамічний метод; override – метод, що перевизначається; message – обробка повідомлення. За умовчанням всі методи, оголошені в класі, є статичними і викликаються як звичайні підпрограми. Методи, які призначені для створення або видалення об'єктів, називаються конструкторами і деструкціями, відповідно. Описи даних методів відрізняються від опису звичайних процедур тільки тим, що в їх заголовках стоять ключові слова constructor і destructor. Як імена конструкторів і деструкції в базовому класі Tobject і інших багато кого класах використовуються імена Create і Destroy.

Програмістам, що давно працюють в Windows, напевно, не потрібно пояснювати значення терміну "подія". Саме це середовище і написані для неї програми управляються подіями, що виникають в результаті дій користувача, апаратури комп'ютера або інших програм. Звісточка про настання події – це повідомлення Windows, отримане так званій функцією вікна. Таких повідомлень сотні, і, за великим рахунком, написати програму для Windows – значить визначити і описати реакцію на деякі з них. Працювати з такою кількістю повідомлень, навіть маючи під рукою довідник, нелегко. Тому однією з великих переваг Delphi є те, що програміст позбавлений від необхідності працювати з повідомленнями Windows (хоча така можливість в нього є). Типових подій в Delphi – не більше двох десятків, і всі вони мають просту інтерпретацію, що не вимагає глибоких знань середовища. Розглянемо, як реалізовані події на рівні мови Object Pascal. Подія – ця властивість процедурного типу, призначена для створення призначеної для користувача реакції на ту або іншу вхідну дію: property OnMyEvent: TMyEvent read FOnMyEvent write FOnMyEvent;

Питання для самоконтролю:

  1. Дати визначення поняття об’єкт.

  2. Дати визначення поняття клас.

  3. Дати визначення поняття властивість.

  4. Дати визначення поняття метод.

  5. Дати визначення поняття подія.