0988b24c

Программирование с объектами


Хорошо хранить процедуры метода отдельно от описаний метода (в отдельном файле) и отдельно от кода, использующего данный объ- ект. Мы рекомендуем помещать процедуры метода в файл с именем, совпадающим с именем объекта, и расширением .ASM. Например, про- цедуры метода для объекта связанного списка можно поместить в файл LIST.ASM. Файл процедур метода должен включать (с помощью INCLUDE) описания метода из файла .ASO.

В конце данной главы показан пример процедур метода объекта списка. Чтобы показать общую структуру файла, приведем фрагмент файла LIST.ASM (его можно найти в примерах на дистрибутивном дис- ке):

;---------------------------------------------------- ;-- Определение объекта связанного списка ----------- ;---------------------------------------------------- MODEL SMALL LOCALS

;** Определить объект связанного списка **

INCLUSE node.aso

;** Создать экземпляр таблицы виртуальных методов ** ;** связанного списка **

DATASEG

TBLINST

;** Методы связанного списка **

CODESEG

;;<<все процедуры методов>>

В общем случае следует использовать следующую форму объектно -ориентированного программирования в Турбо Ассемблере

--------------T-------------------------------------------------¬ ¦ Файл ¦ Содержимое ¦ +-------------+-------------------------------------------------+ ¦<объект>.ASO ¦ INCLUDE <порождающий_объект>.ASO (если он есть),¦ ¦ ¦ GLOBAL описание объекта и директива GLOBAL для¦ ¦ ¦ каждой процедуры методов. ¦ ¦ ¦ ¦ ¦<объект>.ASM ¦ INCLUDE <объект>.ASO содержит директиву TBLINST¦ ¦ ¦ и описание процедур методов, содержит метод init¦ ¦ ¦ c TBLINIT. ¦ L-------------+--------------------------------------------------

Заметим, что вы можете использовать директивы TBLINST и TBLINIT, даже если в объекте нет виртуальных методов. В этом слу- чае никаких действий не выполняется. Таким образом, мы рекоменду- ем вам использовать директивы TBLINST и TBLINIT независимо от на- личия в объекте виртуальных методов. Поместите директиву TBLINST в соответствующий сегмент данных, а TBLINIT - в метод инициализа- ции объекта (который должен быть статическим). Вы должны вызывать этот метод перед использованием всех других методов объекта.



Содержание раздела