Иллюстрированный самоучитель по Maple 6/7

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

Макросы

Макрос – это макрокоманда, короткая запись длинных определений. По сравнению с переназначениями макросы более гибки и могут использоваться для сокращения операций загрузки новых определений из библиотеки и пакетов. Макросы создаются с помощью функции macro:

macrc(e1, e2,… .en)

Где e1, е2,….,, en – ноль или более равенств.

В следующем примере функция numbperm с помощью макроса заменена на np:

> numbperm([1.2.3.4]);
24
> macro(np=numbperm(V));
nр
> V: = [1.2.3.4]:
F: = [1.2.3.4]
> np(V);
24

Макросы могут быть использованы для конструирования выражений из их макроопределений.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.