· Список значений, совокупность спецификаций и совокупность виртуальных сочлененной декларации являются объединениями (в неформальном, но очевидном смысле) соответственно списков значений, совокупностей спецификаций и совокупностей виртуальных префикс-класса и ядра. Если получающаяся таким образом совокупность виртуальных содержит несколько вхождений одного и того же идентификатора, то совокупность виртуальных данного класса считается недопустимой.
· Тело класса сочлененной декларации получается из тела ядра (в предположении, что тело префикс-класса является расщепленным) следующим образом. Символ begin начала блока заменяется копией начала блока тела префикс-класса; вслед за началом блока ядра вставляется копия начальных действий тела префикс-класса; символ end, замыкающий ядро, заменяется копией конца составного, которым оканчивается расщепленное тело префикс-класса. Если же тело префикс-класса не является расщепленным, то оно интерпретируется так, как если бы перед замыкающим его символом endбыли вставлены символы inner.
Если в получившемся таким образом теле класса оказались две декларации для одной виртуальной величины, то та из них, которая возникла при копировании из тела префикс-класса, удаляется. Декларацией метки является ее вхождение в блок в качестве метки некоторого оператора.
Пример 1.
class точка (х, у);
real х, у;
begin
ref (точка) procedure плюс (Р);
ref(точка) Р;
плюс: — new точка (х + Р.х, у + Р.у);
endточка;
Объект класса точка является представлением некоторой точки декартовой плоскости. Он имеет атрибуты х , у и плюс, причем плюс представляет операцию сложения векторов.
точкаclass поляр;
begin
real r, v ;
ref (поляр) procedure плюс (Р);
ref (точка) Р;
плюс : — new поляр (х + Р .х, у + Р .у);
r: = sqrt (x**2 + y**2);
v : = arctg (x, у)
end поляр;
Объект класса поляр — это объект точка с дополнительными атрибутами rи vи с заново определенной операцией плюс. Значения переменных rи vвычисляются и присваиваются этим переменным во время порождения объекта, (arctg — это нелокальная процедура).
Пример 2.
Пусть необходимо описать алгоритм работы некоторой серии микросхем, каждая их микросхем имеет свой алгоритм работы, но и некоторые общие свойства. Опишем класс элемент, являющийся подклассом некоторого системного класса process (см. далее). Параметры класса элемент являются количество входов (квх) и выходов микросхемы (квых). Данный класс описывает символьный массив размерности квх+квых и переходит в пассивное состояние (см. далее), затем должны выполняться правила действий конкретного элемента. И элемент переходит в пассивное состояние до новой активизации. После чего правила действий конкретного элемента повторяются:
process class элемент (квх, квых);
integer квх, квых;
begin
character array х [1; квх+квых];
passivate;
работа: inner;
passivate;
go toработа;
end элемент;
Все элементы делятся на два подкласса: комбинационные элементы (элементы без памяти) и элементы типа автомат (элементы с памятью).
Опишем класс автомат, являющийся подклассом элемент. В классе автомат мы должны запоминать предыдущее состояние и время изменения сигнала. Для этого в теле класса автомат определяется символьный массив xot размерности квх+квых и массив действительных чиселtизм размерности квх+квых. Далее идет описание правил действия (inner). После чего запоминается старый сигнал и время его изменения.
элемент class автомат;
begin
character array хot [1; квх+квых];
real array tизм [1;квх+квых];
inner;
for i:=1 step 1 until квх+квых
do
if хот [i] ne x [i] then
begin
xot [i]:= x [i];
tизм [i]:= time;
end
end автомат;
Комбинационный элемент инвертор можно описать следующим образом:
элемент class инвертор;
begin
integer n1, nb;
n1:=01; nb:=02;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.