Объекты и классы объектов. Подклассы

Страницы работы

Содержание работы

1.  ОБЪЕКТЫ И КЛАССЫ ОБЪЕКТОВ

  ПОНЯТИЕ ОБЪЕКТА И КЛАССА ОБЪЕКТОВ

Основным понятием в языке СИМУЛА–67 является понятие объекта. Объектом в языке СИМУЛА–67 называется некоторая программная модель, которая определяет действия и параметры некоторого компонента моделируемой системы.

В роли параметров объекта выступают атрибуты программной модели (аналогом атрибутов являются формальные параметры). Действия, выполняемые объектом, задаются с помощью последовательности операторов, допустимых в языке. Эту последовательность называют правилами действия объекта или сценарием его поведения.

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

Классы объектов определяются с помощью специальных описаний, называемых декларациями классов. Синтаксис декларации класса задается следующей формой:

<декларация класса>:= <заголовок декларации класса><тело декларации класса>’END’;

<заголовок декларации класса>:= ‘CLASS’ <идентификатор класса> (<список формальных параметров>); <спецификация параметров>;

Декларация класса состоит из заголовка и тела. В заголовке декларации класса указывается имя класса, перечисляются формальные параметры класса. В роли формальных параметров могут использоваться переменные и массивы. Допустимыми фактическими параметрами для формальных переменных являются выражения, а ля формальных массивов – идентификаторы массивов.

Телом декларации класса может быть любой оператор языка СИМУЛА – 67. обычно в роли тела декларации используется блок, т.е. тело декларации выделяется операторными скобками: ‘BEGIN’ <ТЕЛО> ‘END’; все переменные, массивы, процедуры, классы, определенные в блоке тела декларации класса, считаются локальными по отношению к данному объекту, т.е. относятся только к одному объекту. При создании объектов переменным и элементам массивов, определенных в теле декларации типа ‘REAL’ и ‘INTEGER’ присваивается значение 0. Типа ‘BOOLEAN’ – ‘FALBE’. Типа ‘TEXT’ – ‘NOTEXT’. Типа ‘ссылка на объект’ (‘REF’) – ‘NONE’.

Необходимо отметить, что переменные, описанные в блоках, вложенных в тело декларации, извне недоступны. Но есть возможность доступа к атрибутам объекта.

Допустим, необходимо описать класс объектов автомобиль. Каждый автомобиль обладает следующими атрибутами:

-  тип автомобиля (текстовая переменная);

-  грузоподъемность автомобиля (действительная переменная);

-  длина пройденного пути с начала эксплуатации (целая переменная);

ПРИМЕР 2.1

‘CLASS’ АВТОМОБИЛЬ (T, GR, LP,LT);

‘TEXT’ T;

‘REAL’ GR;

‘INTEGER’ LP,LT;

‘BEGIN’

<Описание правил действия>

‘END’ АВТОМОБИЛЬ;

Необходимо отметить, что если телом декларации класса является пустой оператор, либо блок тела содержит только описания, соответствующие объекты не будут выполнять никаких действий и могут использоваться как пассивные структуры данных. Данные объекта аналогичны структурам в языке PL/1.

Создание конкретного объекта, принадлежащего к некоторому классу и имеющего определенные значения атрибутов, выполняется с помощью конструкции вида:

‘NEW’ <ИМЯ КЛАССА> (<СОВОКУПНОСТЬ ФАКТИЧЕСКИХ ПАРАМЕТРОВ>);

Результатом данного оператора является ссылка на новый объект указанного класса с конкретными значениями атрибутов. Эта ссылка может быть присвоена переменной типа «ссылка на объект», которая служит для обращения к данному объекту и его атрибутам.

Описание переменных типа «ссылка на объект» осуществляется с помощью оператора

‘REF’ (<ИМЯ КЛАССА>) <СПИСОК ПЕРЕМЕННЫХ>;

ПРИМЕР 2.2

‘REF’ (АВТОМОБИЛЬ) А1, А2;

В данном примере определяются две переменные, которые могут принимать значение «ссылка на объект» класса автомобиль.

Присваивание ссылочной переменной ссылки на конкретный объект производится с помощью оператора присваивания ссылок, в левой части которого пишется переменная, а в правой – оператор ‘NEW’. Левая и правая части разделяются знаком :- (двоеточие, минус), который читается как «обозначает».

ПРИМЕР 2.3

‘REF’ (АВТОМОБИЛЬ) А1, А2;

А1:- ‘NEW’ АВТОМОБИЛЬ (КАМАЗ, 5,3,2000,100)

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

- тип автомобиля КАМАЗ;

- грузоподъемность 5.3;

- длина пути с начала эксплуатации 2000;

- длина пути с последнего техосмотра 100.

Одному объекту можно дать несколько имен, присвоив ссылку на этот объект нескольким переменным.

ПРИМЕР 2.4

А1:-А2

Созданный объект существует до тех пор, пока на него имеется хотя бы одна ссылка. Уничтожить ссылку на объект можно путем присваивания данной переменной специального значения ‘NONE’. Кроме того, ссылка на объект уничтожается при присваивании ей нового значения, а также при выходе их блока, в котором описана эта переменная. С исчезновением последней ссылки на объект занимаемая память автоматически становится свободной.

Между ссылками на объект определены два отношения: идентичность (==) и неидентичность (=/=). Отношение Х==У истинно в том и только в том случае, если ссылочные переменные Х и У указывают на один и тот же объект или одновременно равны ’NONE’. Отношение X=/=Y является отрицанием Х==У.

Иногда при описании правил действий объекта необходимо сослаться на текущий объект, т.е. на самого себя. Это можно сделать с помощью оператора

Похожие материалы

Информация о работе