Понятие массив обычно является частью определения языка программирования. В объектной технологии нет необходимости нагружать нотацию специальными заранее определенными конструкциями: массив - контейнерный объект, экземпляр класса, который можно назвать ARRAY.
ARRAY хороший пример родового класса. Рассмотрим первый набросок этого класса:3)
indexing description: "Последовательность значений одного типа или согласуемых типов,% %доступных через целые индексы в заданном диапазоне" class ARRAY [G] creation make feature make (minindex, maxindex: INTEGER) is -- Размещение массива с границами minindex и maxindex -- (пустой, если minindex > maxindex) do ... end lower, upper, count: INTEGER -- Минимальный и максимальный допустимый индекс; размер массива. put (v: G; i: INTEGER) is -- Присвоить v элементу массива с индексом i do ... end infix "@", item (i: INTEGER): G is -- Элемент с индексом i do ... end end -- класса ARRAY
Для создания массива a с границами m и n, тип объявления которого ARRAY [T] с заданным типом T, нужно выполнить инструкцию создания
create a.make (m, n)
Для задания значений элементов массива используется процедура put: вызов a.put(x, i) присваивает значение x i-ому элементу. Для доступа к элементам можно использовать функцию item (синоним инфиксной операции @, поясняемой позже), например:
x := a.item (i) Вот схема того, как этот класс может быть использован клиентом: pa: ARRAY [POINT]; p1: POINT; i, j: INTEGER ... create pa.make (-32, 101) -- Разместить массив с указанными границами. pa.put (p1, i) -- Присвоить значение p1 элементу с индексом i. ... p1 := pa.item (j) -- Присвоить сущности p1 значение элемента с индексом j.
В обычной нотации (скажем, в Pascal) нужно писать:
pa [i] := p1 вместо pa.put (p1, i)
p1 := pa [i] вместо p1 := pa.item (i)