как мне кажется, способ использования отображаемой памяти. Полный текст модуля приведен в прил.П6.
С этой целью в интерфейсной части модуля определена иерархия объектов, показанная на рис.5.2.
Рис.5.2. Иерархия объектов модуля F_EMS
Базовым объектом иерархии является объект TEMSArea. EMS— память в рамках этого объекта рассматривается как массив вида
type
EMSMemory = array [0..Size-1] of Byte,
где Size — длина резервируемой объектом памяти.
Объект TEMSVector порожден от TEMSArea и предназначен для начального структурирования данных. Этот объект рассматривает отображаемую память как набор фрагментов, каждый из которых имеет одинаковую длину в байтах. В стандартном Паскале ему в какой—то степени соответствует одномерный массив из элементов произвольного типа.
От TEMSVector порожден объект TEMSMatrix, имитирующий двумерные массивы стандартного Паскаля. Он перекрывает методы родителя, чтобы обрабатывать обращение к элементам с помощью двух индексов. Как и в стандартном Паскале, элементы в объекте TEMSMatrix располагаются по столбцам: за элементом с индексами 1,1 располагается элемент 1,2 и т.д.
Объект TEMSArray также порожден от TEMSVector и имитирует массив с произвольным количеством измерений. Фактические индексы элемента при обращении к процедурам Setltem и Getltem задаются в виде списка, что не очень удобно, вот почему для моделирования одно— и двумерных массивов используются отдельные объекты.
Объект TEMSType порожден от TEMSArea и имитирует файл с последовательным доступом (ленточный накопитель). Его элементы могут иметь различную длину, поэтому доступ к очередному элементу возможен только после чтения (записи) предыдущего элемента.