|
Модули
Модули придают языку программирования
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) требует серьезного знакомства с техникой объектно-ориентированного
программирования. Такое знакомство выходит за рамки данной книги.
|