Компьютерная математика и пакет Maple

       

Модули



Модули

Модули придают языку программирования Maple 7 некоторые свойства языков объектно-ориентированного программирования. Они служат для реализации абстрактного типа данных на основе инкапсуляции — объединения данных и процедур их обработки. Модули задаются ключевым словом module с пустыми скобками () и завершаются словами end module или просто end:

name := module()

export eseq; local Iseq; global gseq:

option optseq: description desc:

Тело модуля 

end module (или просто end)

Хотя структура модуля во многом напоминает структуру процедуры, включая объявление локальных и глобальных переменных, параметров и описаний, между ними есть существенная разница:

  •  модуль не имеет списка входных параметров; О в модуле могут размещаться данные;
  •  модули могут использоваться для создания пакетов процедур, доступ к которым обеспечивается командой with;
  •  модули имеют свойства в виде локальных переменных и методы в виде процедур интерфейса модулей;
  •  реализация абстрактных типов данных с помощью модулей скрыта от пользователя;
  •  модули могут содержать оператор export eseq, объявляющий экспортируемые переменные модуля;
  •  для доступа к экспортируемым переменным модуля может использоваться специальный оператор «:-» (двоеточие и минус);
  •  модули и процедуры могут вкладываться друг в друга без ограничения уровня вложенности;
  •  модули могут иметь специальные конструкторы объектов.

Следующий пример демонстрирует создание модуля pt, в котором заданы две операции (сложения plus и умножения times) и показан доступ к ним:

> pt:= module()

export plus, times;

plus := (a.b) -> a + b;

times := (a.b) -> a * b: end module:

pt := module () export plus, times; end module

 > pt:-p1us(3,5);

8

> pt:=times(3,7); 

21

Детальную информацию о модулях и о конструкторах объектов можно найти в справках по ним. Некоторые пакеты Maple 7 (в основном сравнительно новые) реализованы уже не в виде процедур, а в виде модулей (например, в виде модуля сделан пакет LinearAlgebra). В простейшем виде модули могут использоваться всеми пользователями системы Maple 7, но их серьезное применение (например, с целью создания полноценных пакетов Maple 7) требует серьезного знакомства с техникой объектно-ориентированного программирования. Такое знакомство выходит за рамки данной книги.




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