Виклик конструкторів та деструкторів 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Виклик конструкторів та деструкторів



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

Для конструкторів параметр VMT містить зміщення таблиці віртуальних методів для запам’ятовування в полі таблиці віртуальних методів параметра Self, щоб його ініціалізувати.

Більше того, якщо конструктор викликається для розміщення динамічного об’єкту за допомогою розширеного синтаксису стандартної процедури New, через параметр Self передається вказівник Nil. Це змушує конструктор розміщувати новий динамічний об’єкт, адреса якого передається викликаючій програмі через DX:AX при поверненні з конструктора. Якщо конструктор не може розмістити об’єкт, то в DX:AX повертається порожній вказівник NIL.

Нарешті, якщо конструктор викликається з використанням власного ідентифікатора методу (ідентифікатора типу об’єкту, після якого йдуть крапка та ідентифікатор методу), то в параметрі таблиці віртуальних методів передається нульове значення. Це вказує конструктору, що йому не слід ініціалізувати поле Self таблиці віртуальних методів.

Для деструкторів нульове значення параметра таблиці віртуальних методів означає звичайний виклик, а ненульове вказує, що деструктор був викликаний з використанням розширеного синтаксису стандартної процедури Dispose. Це змушує деструктор видалити Self безпосередньо перед поверненням (розмір Self визначається з першого слова Self  у VMT).

 

Підсумок

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

Якщо об’єкт чи якийсь з його предків містить віртуальні методи, для нього створюється таблиця віртуальних методів (VMT). Для об’єкта, що містить або успадковує динамічні методи, створюється таблиця динамічних методів (DMT)

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

 

Питання по темі

1. Який із описів динамічного методу не містить синтаксичних помилок

а) FUNCTION GetName:String;VIRTUAL 5;

б) FUNCTION GetName:String;VIRTUAL=5;

в) FUNCTION GetName:String;VIRTUAL:5;

 

2. Яка функція повертає записаний у таблиці віртуальних методів розмір екземпляру об’єктного типу?

а) SizeOfObject

б) SizeOf

в) Size

 

3. Що повертає функція TypeOf?

а)вказівник на таблицю віртуальних методів об’єктного типу

б)вказівник на таблицю динамічних методів об’єктного типу

в)розмір таблиці віртуальних методів об’єктного типу

 

 

4. Яке з наступних тверджень правильне?

а) в таблиці динамічних методів (DMT) кодуються всі методи типу.

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

в) в таблиці динамічних методів (DMT) кодуються всі віртуальні методи типу.

 

5. Що дає розробнику використання динамічних методів?

а) економію часу

б) можливість безпосереднього доступу до прихованих методів і даних об’єкту

в) економію простору

 

 

 


Тема 8 Об’єктно-орієнтоване програмування в Delphi

 

Вступ

Поняття об’єкта в Delphi та операції з ним

Оголошення класу

Властивості

Методи та їх успадковування, поліморфізм

Конструктори і деструктори

Події

Підсумок

Питання по темі

 

Вступ

Середовище швидкого проектування Delphi містить вбудовану мову, яка до 5-ї версії включно називалася Object Pascal, а у пізніших версіях – Delphi. Вже з назви Object Pascal зрозуміло, що основоположним для Delphi є приницип об’єктного програмування. Справді, Delphi надає в розпорядження розробника дуже значне число об’єктних типів (компонент), які можна використовувати відразу ж, змінюючи деякі їх типи, а можна і перевизначати, створюючи дочірні об’єкти.

Основні засади ООП Delphi успадкувала від Паскалю у різних його варіантах включно з правиласи «хорошого стилю програмування». Кожен тип об’єктів має стандартну назву, яка починається символом «Т», а кожен екземпляр об’єкта цього типу за замовчуванням дістає ту ж назву з відкиданням символа «Т» і додаванням порядкового номеру. Наприклад, тип об’єктів називається TEdit, а екземпляри цього типу дістають назви Edit1, Edit2 і т.д.

Все, раніше нами вивчене про ООП у Паскалі, діятиме і у Delphi, однак Delphi має і багато нових можливостей, які вже дають можливість вважати її повноцінною об’єктно орієнтованою мовою. Крім того, деякі знайомі нам терміни і поняття будуть називатися трохи інакше. Для того, щоб у майбутньому ми могли не просто розробляти візуальний інтерфейс, використовуючи середовище як дитячий конструктор, а створювати повноцінні об’єкти, попередньо опишемо ці нові можливості та відмінності.

 



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 52; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.205.223 (0.006 с.)