Використання об'єктів delphi

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

У Object Pascal екземпляр об'єкта створюється за допомогою виклику одного з конст рукторов (constructor) цього об'єкта. Конструктор відповідає за створення екземпляра об'єкта, а також за виділення пам'яті і необхідну ініціалізацію полів. Він не тільки створює об'єкт, але і приводить його в стан, необхідне для його далекою шего використання. Кожен об'єкт містить принаймні один конструктор Create (), який може мати різну кількість параметрів різного типу - в залежності від типу об'єкта. У цьому розділі розглядається тільки найпростіший кін структор Create () (без параметрів).

На відміну від мови C ++, конструктори в Object Pascal не викликаються автоматиче

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

ності програміста. Синтаксис виклику конструктора наступний:

Зверніть увагу на унікальну особливість виклику конструктора - він викликаючи ється за допомогою посилання на тип, а не на екземпляр типу (на відміну від інших методів, вича викликаються за допомогою посилання на екземпляр). На перший погляд це може поки заться безглуздістю, проте в цьому є глибокий сенс - адже екземпляр об'єкта FooOb- ject в момент виклику конструктора ще не створений. Але код конструктора класу TFooObject статичний і знаходиться в пам'яті. Він відноситься до типу, а не його примірнику, тому такий виклик цілком коректний.

Виклик конструктора для створення екземпляра об'єкта часто називають створенням ек

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

Після закінчення використання примірника об'єкта слід звільнити виділено ву для нього пам'ять за допомогою методу Free (). Цей метод спочатку перевіряє, чи не рівний екземпляр об'єкта значенням Nil, і потім викликає деструктор (destructor) об'єкта - метод Destroy (). Зрозуміло, що дія деструктора назад дії конструктора, тобто він звільняє всю виділену пам'ять і виконує інші дей ствия зі звільнення захоплених конструктором об'єкта ресурсів. Синтаксис виклику методу Free () простий:

Зверніть увагу, що, на відміну від виклику конструктора, виклик деструктора виконується за допомогою посилання на екземпляр, а не на тип. Крім цього, запам'ятайте ще одна порада - ніколи не використовуйте безпосередній виклик методу De- stroy (). Безпечніше і коректно викликати метод Free ().

У мові C ++ деструктор примірника статично створеного об'єкта викликається авто- матически, коли цей екземпляр залишає зону видимості. У разі динамічного створення екземпляра (за допомогою оператора new) об'єкт необхідно знищити са мостійно, використавши оператор delete. Те ж правило діє і в Object Pascal, але з однією поправкою: у ньому всі екземпляри об'єкта - динамічні, і про- грамміст повинен видалити їх сам. Візьміть собі за правило знищувати і освобож- дати все, що було створено вами в програмі. Винятком з цього правила являют- ся об'єкти, що належать іншим об'єктам. Цей тип об'єктів знищується авто- матически. Ще одним винятком є ​​об'єкти з керованим часом життя, мають власний лічильник посилань (наприклад похідні від класів TIn- terfacedObject або TComObject), які автоматично видаляються після лікві- дації останньої посилання на них.

Type TFoo = Class;

Type TFoo = Class (TObject);

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

Створення методу - процес з двох етапів. Спочатку слід описати метод в ого лення типу, а потім створити код його реалізації. Ось приклад опису та визначення методу:

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

Схожі статті