Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Симула.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
393.73 Кб
Скачать

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).

к

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]