Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Об1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
270.85 Кб
Скачать

Тема 2: [Об'єктно-орієнтований підхід до програмування в Object Pascal]

  1. 1.    Поняття об'єкту в Delphi

  2. 2.    Ініціалізація та знищення об'єктів

  3. 3.    Інкапсуляція

  4. 4.    Наслідування

  5. 5.    Поліморфізм

1. Поняття об'єкту в Delphi

Об'єктно-орієнтоване програмування - це методологія програмування, побудована на представленні програми у вигляді сукупності об'єктів, кожен із яких є екземпляром певного класу, а класи утворюють ієрархію наслідування.

В основі об'єктно-орієнтованого програмування лежать три фундаментальні принципи: інкапсуляція, наслідування та поліморфізм.

Інкапсуляція - це об'єднання 3-х різних за природою сутностей: полів, методів та властивостей в один об'єкт. З іншої сторони, це процес розділення вмісту та поведінки об'єкта. Інкапсуляція служить для того, щоби ізолювати дані об'єкта від його поведінки.

Наслідування - це принцип, згідно якого клас-нащадок наслідує таку саму структуру даних та методів (поведінку), що і у його предка.

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

Клас — це складна структура, яка включає крім опису даних, опис процедур і функцій, які можуть бути виконані над представником класу об’єктом.

Розглянемо приклад простого класу:

TStudent = class

Private

fname : string [20];

fgrupe : string [8];

Public

procedure Show;

end;

Дані класу називаються полями, процедури і функції — методами. В наведеному прикладі TStudent — ім’я класу, fname, fgrupe — імена полів, Show — ім’я методу. В Delphi прийнято, що імена класів починаються з букви T, імена полів — з букви f. Опис класу знаходиться в розділі опису типів.

Об’єкти як представники класу описуються в розділі var. Наприклад,

Var

X, Y: TStudent;

2. Ініціалізація та знищення об'єктів

В Delphi об’єкт — це динамічна структура. Змінна-об’єкт містить не дані, а посилання на дані об’єкту. Тому потрібно завжди пам’ятати про виділення пам’яті для цих даних. Виділення пам’яті здійснюється за допомогою спеціального методу — конструктору, який за звичай називають Create (створити). Для того, щоб підкреслити важливу роль і поведінку конструктора, в описі класу замість слова procedure викорстовуєтья слово constructor.

Наприклад,

TStudent = class

Private

fname : string [20];

fgrupe : string [8];

Public

procedure Show;

constructor Create;

end;

Виділення пам’яті для даних об’єкту відбувається шляхом присвоювання значення результату застосування методу конструктора до типу (класу) об’єкта.

Наприклад, після виконання інструкції

X := TStudent.Create;

Виділяється необхідна пам’ять для даних об’єкту X.

Крім виділення пам’яті конструктор ще розв’язує задачу ініціалізації об’єкту, тобто присвоювання полям об’єкту початкових значень. Наведемо приклад реалізації конструктора для об’єкту TStudent:

Constructor TStudent.Create;

begin

fname := ‘ ‘;

fgrupe := ‘ ‘;

end;

Виділення пам’яті в конструкторі здійснює компілятор.

Після створення та ініціалізації об’єкт можна використовувати. Доступ до полів об’єкту здійснюється вказуванням імені об’єкту та імені поля, які відокремлюються один від одного крапкою. Наприклад,

 

X.fname := ‘Tanja’;

x.fgrupe := ‘MI-22’;

Для знищення об'єкту служить деструктор. Деструктор оголошується за допомогою зарезервованого слова destructor, після якого йде ім'я деструктора. Деструктор нічого не повертає і не має параметрів. Варто замість прямого виклику деструктора використовувати метод Free. Цей метод є у всіх класів в Delphi, оскільки вони наслідуються від Tobject. Цей метод спочатку перевіряє правильність вказівника на клас (не рівність nil), а потім тільки викликає Destroy. Це безпечніший спосіб знищення об'єкту.

Якщо в програмі якийсь об’єкт більше не використовується, то можна звільнити пам’ять, яку займають поля даного об’єкту. Для цього використовують метод-деструктор Free. Наприклад, для того, щоб звільнити пам’ять, яку займають поля об’єкту X достатньо записати: