Warning: include(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include_once(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82

Warning: include_once(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82
Модули | Учебники

Главная > Maple 15 > Модули


Модули

Модули
Модули придают языку программирования Maple 15 некоторые свойства языков объектно-ориентированного программирования. Они служат для реализации абстрактного типа данных на основе инкапсуляции — объединения данных и процедур их обработки. Модули задаются ключевым словом 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 15 (в основном сравнительно новые) реализованы уже не в виде процедур, а в виде модулей (например, в виде модуля сделан пакет LinearAlgebra). В простейшем виде модули могут использоваться всеми пользователями системы Maple 15, но их серьезное применение (например, с целью создания полноценных пакетов Maple 15) требует серьезного знакомства с техникой объектно-ориентированного программирования. Такое знакомство выходит за рамки данной книги.

Макросы
Макрос — это макрокоманда, короткая запись длинных определений. По сравнению с переназначениями макросы более гибки и могут использоваться для сокращения операций загрузки новых определений из библиотеки и пакетов. Макросы создаются с помощью функции macro:
macrc(e1, e2, …. en)
где el, е2, ….,, en — ноль или более равенств.
В следующем примере функция numbperm с помощью макроса заменена на пр:
> numbperm([l,2,3,4]);
24 
 > macro(np=numbperm(V)); 

> V:=[1.2.3.4]: 
F:=[l,2,3,4] 
> np(V); 
24
Макросы могут быть использованы для конструирования выражений из их макроопределений.

Статьи по теме

Комментарии запрещены.