Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Классы и объекты



Центральными понятиями языка СИМУЛА яв­ляются «объект» и «класс».

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

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

Самосвал описывается следующими внешними переменными:

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

Правила действий в карьере каждого из самосвалов следующие: самосвал преодолевает верхнюю дорогу и встает на стоянку для загрузки. Он ждет загрузки (в очереди), загружается и покидает карьер по другой дороге. Каждый самосвал в карьере выполняет только такие действия.

Экскаватор описывается производительностью (внешняя переменная). Для определения загруженности каждого из экскаваторов необходимо знать время работы экскаватора за смену (или простой экскаватора). Причем простой складывается из квантов простоя, т.е. необходимо знать каждый из этих квантов времени (время конца простоя минус время начала простоя). Это внутренние переменные каждого из экскаваторов.

Правила действий экскаватора: если на стоянке есть порожний самосвал, то он загружает его за некоторое время (это время определяется как отношение грузоподъемности самосвала к производительности экскаватора). Загруженный самосвал уезжает от экскаватора. Если стояка пуста, то экскаватор переходит в состояние простоя (начало простоя). В состояние работа экскаватор перейдет при появлении на стоянке пустого самосвала (конец простоя экскаватора). Каждый экскаватор выполняет в карьере только такие действия.

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

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

Пример описания декларации класса «самосвал»:

class самосвал(грузоподъемность, средняя скорость);

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

real средняя скорость;

begin

real время появления в карьере,

время нахождения в карьере;

«правила действия самосвала»

end описания класса самосвал;

Пример описания декларации класса «экскаватор»:

class экскаватор(производительность);

integer производительность;

begin

real время общего простоя экскаватора,

время начала простоя экскаватора;

«правила действия экскаватора»

end описания класса экскаватора;

Если в декларации класса не указано никаких действий, то такая декларация определяет просто класс структур данных.

Пример:

class заказ (номер);

integer номер;

Begin

integer количество, время прибытия;

real время, обработки;

end;

Класс можно использовать в качестве «префикса» к декларации другого класса; тем самым свойства, заданные префиксом, будут внесены в объекты, задаваемые новой декларацией класса.

Примеры:

заказ 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 – производительность экскаватора (в кг/мин).

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

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

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





Дата публикования: 2015-01-23; Прочитано: 290 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...