
- •1.3.3. Классы
- •1.3.4. Возможность применения в специальных областях
- •2.1. Синтаксис
- •2.2. Семантика ,; V-
- •2.2.1. Подклассы
- •2.2.2. Сочленение . -
- •2.2.3. Виртуальные величины
- •4.3.2.2. Генераторы объектов ,
- •4.3.2.3. Локальный объект
- •4.3.2.4. Оперативная квалификация «
- •7. Дистанционное обращение
- •7.1.2. Семантика
- •10.8.2. Семантика
- •11.3.2. Семантика
- •1 12.1. Последовательности псевдослучайных чисел
- •14.2.1.2. Семантика-
2.1. Синтаксис
■ ■ ■ v
^декларация) :: = (АЛГОЛ-декларация)
(декларация класса) [(пусто) (идентификатор класса) :: = (идентификатор) /префикс) :: = (пусто) | (идентификатор класса) (совокупность виртуальных) :: = (пусто) | virtual:
■ -' ' . (совокупность спецификаций)'
(тело класса) :: = (оператор) [(расщепленное тело) (начальные действия):: = (пусто) |
(начальные действия); (оператор) (расщепленное тело):.: =(начало блока) (начальные действия);.
• ■ inner; (конец составного)
(декларация класса) :: *= (префикс) (ядро) ;' '*
(ядро) :: = class (идентификатор класса) ' ■. . ±.,
(совокупность формальных параметров) ■-'
(список значений) (совокупность спецификаций) L1 ■ (совокупность виртуальных) (тело класса) ' •> ;
2.2. Семантика ,; V-
Декларация класса служит для определения класса, связанного с идентификатором класса. Класс состоит из «объек-, тов», каждый из которых является динамическим представи-'
телем. (динамическим экземпляром, или короче — экземпля- '■ром) тела класса. ,
Объект порождается в результате вычисления «генера тора объекта», аналогичного обращению к процедуре (см. разд. 4.3.2.2.). . . ■
Тело класса всегда действует как блок. Если оно имеет-форму оператора, который не является непомеченным блоком, тело класса отождествляется с блоком (т. е. действует так, как будто бы на его месте стоит блок) вида
begin ; 5 end
i
где 5 есть буквальная копия данного тела. Расщепленное тело действует как блок, в котором символ inner представляет пустой оператор (см. также следующий раздел).
Для каждого данного объекта формальные параметры, величины, специфицированные в совокупности виртуальных, и величины, декларированные локальными в теле класса, называются «атрибутами» объекта. Декларация или спецификация атрибута называется «определением» этого атрибута.
Для каждого формального параметра требуется спецификация в совокупности спецификаций. Параметры считаются переменными, локальными в теле класса. Они получают первоначальные значения в соответствии с правилами передачи параметров (см. разд. 8.2). Вызов по наименованию параметров декларации класса не допускается.
Разрешаются следующие спецификации:
(тип), array и (тип) array.
Атрибуты, определенные в совокупности виртуальных, называются «виртуальными величинами». Они не должны встречаться в списке формальных параметров.
Виртуальные величины имеют некоторые свойства, сближающие их с формальными параметрами, вызываемыми по наименованию. Однако для каждого данного объекта окружением соответствующих «фактических параметров»!) является сам этот объект, а не окружение соответствующего -генератора объектов (см. разд. 2.2.3).
Конфликты наименований между формальными параметрами и прочими атрибутами, определенными в декларации класса, не допускаются.
'
■'
lJ Взятые в кавычки слова «фактические
параметры» относятся к тем
величинам,
которые по отношению к виртуальным
играют роль, аналогич
ную роли
фактических параметров по отношению к
формальным (
разд. 2.2.3),, — Прим,
перевь ' .''".' V1 •
В выражениях для граничных пар в декларации атрибута-массива допускается употребление формальных параметров декларации класса, атрибутом которого является рассматриваемый атрибут-массив.
*
Пример:
Следующая декларация класса описывает интегрирование по Гауссу с п абсциссами как составное понятие:
ш н
class Гаусс (п); integer п; begin array W, X [1 :ri\;
real procedure интеграл (F, a, b) real procedure F: » . real a, b;
begin real сумма; integer i;
for /: = 1 step 1 until n do
сумма: = сумма + F(a + 0.5X(fc — a) X
интеграл :=■ 0.5 X (b — a) X сумма • . end интеграл;
comment вычисление значений элементов массивов W и X как функций от п; - *
e
nd
Гаусс;
Оптимальные веса W и, абсциссы X могут быть вычислены как функции от п. Поскольку алгоритм вычисления W и X является частью тела класса, вычисление и присваивание этих значений может выполняться в момент порождения объекта. Могут сосуществовать несколько объектов класса Гаусс с различными значениями п. Каждый такой объект имеет локальную процедуру интеграл для вычисления интеграла по соответствующей формуле с п абсциссами (см. также примеры в разд. 6.1.2.2 и 7.1.2).
к