Объекты и классы объектов. Подклассы, страница 2

‘THIS’ А;

где А – идентификатор класса.

Значение данного оператора, который можно употреблять только в теле декларации класса А, является ссылка на объект класса А, исполняющий в данный момент свои правила действия.

2.2. ПОДКЛАССЫ

При описании классов сложных объектов среди них можно выделить некоторые подклассы, которые обладают некоторыми специфическими свойствами. Язык СИМУЛА – 67 обладает возможностью структурированного описания сложных объектов в виде древовидных структур декларации классов, т.е. в некотором классе можно описать наиболее общие свойства объектов. Далее определить некоторый подкласс данного класса и описать свойства данного подкласса и т.д. В декларациях классов, расположенных на нижних уровнях структуры, можно использовать все средства, определенные в декларациях вышестоящих уровней и создавать на их основе новые классы объектов, которые на ряду со всеми свойствами объектов верхних классов обладают еще рядом дополнительных свойств.

Допустим, класс является подклассом А. Тогда, класс В должен быть описан следующим образом:

<ПРЕФИКС> <ОПИСАНИЕ КЛАССА В>;

Где <ПРЕФИКС> есть идентификатор класса А, т.е. декларация класса с префиксом А и идентификатором В определяет некоторый подкласса А. Объект, принадлежащий к этому подклассу, состоит из префиксной части, которая является объектом класса А, и из ядра, описываемого ядром декларации класса В. эти две части сочленяются в один составной объект. Класс А сам может иметь префикс.

Пусть А1, А2, …, АN – классы. Причем А1 не имеет префикса. А  АК  имеет префикс АР  (Р=К - 1), тогда А1, А2, …, АР называется последовательностью префиксов для класса АК. Индекс К называется префиксальным уровне класса АК. Говорят, что класс АI объемлет класс АJ (или что класс АJ содержится в классе АI). Если I<=J, и класс АI называется подклассом АJ если I>J, (I, J=1, 2, …, N).

При употреблении префиксов необходимо соблюдать следующие ограничения:

1.  Ни один класс не должен встречаться в своей собственной последовательности префиксов.

2.  Класс может быть употреблен в качестве префикса лишь на том блочном уровне, где он объявлен. Идентификатор системного класса, употребляемый в качестве префикса, считается относящимся к декларации этого системного класса, имеющейся в начале наименьшего объемлющего блока.

Работа объектов, принадлежащих классу, определяемому декларацией с префиксом, происходит в соответствии с эквивалентной декларацией без префикса, получаемой путем объединения атрибутов и правил действия, которые заданы в декларациях класса и подкласса. Этот процесс объединения называется сочленением деклараций классов и выполняется в соответствии с алгоритмом  сочленения:

1.  Список формальных параметров сочлененной декларации состоит из списка формальных параметров  префикс - класса, за которыми следует список формальных параметров ядра.

2.  Список значений и совокупность спецификаций являются объединениями списка значений и совокупности спецификаций префикс – класса и ядра.

3.  Тело класса сочлененной декларации получается из тела префикс – класса следующим образом. Слово ‘INNER’  в префикс–классе заменяется на тело ядра. Если же тело префикс – класса не содержит ‘INNER’, т.е. не является расширенным, то считается, что данный оператор находится перед оператором  ‘END’ тела префикс – класса.