Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

ВНУТРІШНЄ ПРЕДСТАВЛЕННЯ ОБ’ЄКТІВ ____________________________________________

Читайте также:
  1. A b c d e f g h i j k l m n o p q r s t u v w x y z
  2. A GENERAL OUTLINE OF THE DISCUSSION OF A STORY
  3. a group of customers that the business has decided to aim its marketing efforts and ultimately its merchandise towards
  4. A limited version of federalism is a less miserable solution than the break-up of the euro
  5. A Little Chocolate a Day May Help Lower Blood Pressure
  6. A New Abstraction for Information Management
  7. A perceptive article from an emerging small business management sphere.
  8. A VICTIM TO ONE HUNDRED AND SEVEN FATAL MALADIES
  9. A скорочення литкового м’язу жаби під дією гальванічного пінцету на препарат задніх лапок жаби
  10. A) (0;0) нүктесі арқылы өтеді

ДИНАМІЧНІ МЕТОДИ ____________________________________________________________

В Pascal-і існує додатковий клас методів пізнього зв’язування, які називаються динамічними. Фактично, динамічні методи є підкласом віртуальних методів і відрізняються від них тільки способом виклику на етапі виконання. У всьому іншому динамічний метод можна розглядати як еквівалентний віртуальному.

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

FUNCTION GetName:String;VIRTUAL 5;

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

Використання динамічних методів доцільне при створенні довгої ієрархії об’єктів з великою кількістю віртуальних методів. Для цих останніх в ієрархії будуть створюватися дуже довгі таблиці віртуальних методів з вказуванням всіх віртуальних методів предків, хоча перевизначатися може тільки частина з них. Це вимагає значного об’єму використовуваної пам’яті для зберігання VMT.

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


ВНУТРІШНЄ ПРЕДСТАВЛЕННЯ ОБ’ЄКТІВ ____________________________________________

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

Якщо об’єктний тип визначає віртуальні методи, конструктори чи деструктори, то компілятор розміщає в ньому додаткове поле даних. Це 16-бітове поле, що називається полем таблиці віртуальних методів, використовується для запам’ятовування зміщення таблиці віртуальних методів в сегменті даних. Поле таблиці віртуальних методів розміщується безпосередньо після звичайних полів об’єктного типу. Якщо об’єктний тип успадковує віртуальні методи, конструктори чи деструктори, то він успадковує і поле VMT, завдяки чому додаткове поле таблиці віртуальних методів не розміщається.

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

Наступний приклад ілюструє представлення в сегменті даних об’єктів типів TStudent і TStudent1.




Дата добавления: 2015-01-29; просмотров: 31 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав