Объектно-ориентированное программирование


Объектно-ориентированное программирование - стр. 100


 В общем случае дерево в иерархии объектов развивается от общего к частному. Часто корневой объект иерархии  -  это ничего не делающий абстрактный объектный тип, определенный для единственной цели - быть корнем иерархии. Объекты - листья в дереве иерархии- объекты без потомков- являются узкоспециализированными, и маршрут от корня до листа увеличивает специализацию объектов. Вы можете обнаружить это в  иерархической диаграмме библиотеки  OWL.

    

 

 

 

ПОЛИМОРФИЗМ

 

Без полиморфизма объектно-ориентированное программирование будет только умным способом приклеивания процедур к полям данных. Этот термин происходит от греческого “ много форм “ - полиморфная ссылка может указывать на определенный объект или на любой объект, унаследованный от него непосредственно или косвенно. Другими словами, полиморфная ссылка объекта может указывать на экземпляр  любого объекта в области определенного типа. Вы можете вызывать любой виртуальный метод, который описывается в определенном объектном типе, и будет вызван правильный метод для реального объектного типа. С точки зрения структурного программирования, это кажется невозможным, но объектно-ориентированный Турбо Паскаль выполняет это, используя технологию, которая называется позднее связывание.

Обычный вызов процедуры компилируется в простую команду Call на уровне ассемблера, и после того, как Dos -  загрузчик  загрузил  Exe - файл, адрес вызова остается константой. Это раннее связывание- вызов процедуры связывается с определенным адресом в процессе компиляции.

   Вызов виртуального метода происходит совершенно иначе. Это косвенное обращение к адресу, содержащемуся в Таблице Виртуальных Методов (VMT) для определенного объектного типа. Когда вы определяете виртуальный метод для объекта, вы выделяете место в VMT для этого метода, и каждый его потомок будет использовать то же место для его версии метода. Компилятор просто генерирует код для поиска места в VMT  и выполняет вызов по найденному там адресу.

Первое слово VMT -  размер экземпляра этого объекта, а второе слово используется для проверки инициализации объекта, когда задана директива компилятора.


Начало  Назад  Вперед



Книжный магазин