СИМУЛА - универсальный процессо-ориентированный язык моделирования, страница 2

Примеры:

заказ class групповой заказ;

begin

integer размер партии;

real время установки;

end;

заказ class отдельный заказ;

begin

real время установки, время окончания, вес;

end;

отдельный заказ class плита;

begin

real длина, ширина;

end;

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

Если в декларации класса описаны какие-либо действия, то все объекты, принадлежащие этому классу, могут исполнять действия по заданному таким образом образцу. Все действия, принадлежащие одному объекту, могут быть исполнены последовательно друг за другом (как для процедуры), но имеется и другая возможность, когда действия, принадлежащие одному объекту, исполняются как последовательность отдельных подпоследовательностей, называемых «активными фазами» Под активными фазами понимаются действия объекта, которые изменяют состояние системы (например, значения локальных переменных данного или другого объекта, состояния другого объекта).

Между двумя последовательными активными фазами одного объекта может иметь место любое количество активных фаз других объектов.

Например, для самосвала можно выделить следующие активные фазы:

1.  Запоминание времени приезда в карьер.

2.  Пустой самосвал встает в очередь на загрузку и активизирует работу экскаваторов.

3.  Запоминание времени выезда из карьера.

Для экскаватора:

1.  Если очередь пуста, то запоминание времени начала простоя.

2.  Если в очереди есть самосвалы для загрузки, то удаление первого пустого самосвала из очереди.

3.  Активизация загруженного самосвала.

Новый объект, принадлежащий классу заказ, порождается выражением вида:

new самосвал(5,30.0);

где 5 – грузоподъемность самосвала (в тоннах), 30.0 – средняя скорость самосвала (в км/час);

new экскаватор(200);

где 200 – производительность экскаватора (в кг/мин).

Посредством таких выражений можно создать столько самосвалов и экскаваторов, сколько требуется.

Потребность манипулировать с объектами и связывать их друг с другом заставляет ввести в язык средства обработки списков (как описано ниже).

Общая база языка СИМУЛА  содержит элементарные  операторы, необходимые для того, чтобы организовать исполнение всей программы в виде последовательности активных фаз объектов. Однако в случае некоторых специальных применений пользователь должен иметь в своем распоряжении удобные средства для специальной (т.е. соответствующей конкретной задаче) организации последовательности выполнения программы.

Декларации класса

Формальное описание синтаксической диаграммы декларации класса приведено в приложении 4.

Декларация класса служит для определения класса, связанного с идентификатором класса. Класс состоит из «объектов», каждый из которых является динамическим представителем. (динамическим экземпляром, или короче — экземпляром тела класса).

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

Тело класса всегда действует как блок. Если оно имеет форму оператора, который не является непомеченным блоком, тело класса отождествляется с блоком (т.е. действует так, как будто бы на его месте стоит блок) вида

begin; S end

где S есть буквальная копия данного тела. Расщепленное тело действует как блок, в котором символ inner представляет пустой оператор.

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