Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Вызов процедуры

Читайте также:
  1. II. МЕТОДЫ, ПОДХОДЫ И ПРОЦЕДУРЫ ДИАГНОСТИКИ И ЛЕЧЕНИЯ
  2. II. МЕТОДЫ, ПОДХОДЫ И ПРОЦЕДУРЫ ДИАГНОСТИКИ И ЛЕЧЕНИЯ
  3. III. Административные процедуры
  4. Административные процедуры.
  5. Аудиторские процедуры, используемые при аудите кассовых операций
  6. Б) инстанции и процедуры, обеспечивающие соблюдение (в том числе принудительное) этих правил.
  7. Блокирующиеся, неблокирующиеся и асинхронные системные вызовы
  8. Возврат из процедуры прерывания
  9. Вызов командных файлов с возвратом. Команда Call
  10. Вызов по ссылке и по значению

Говоря в общем виде в терминах Системы ИИ вызов соответствующей процедуры должен осуществляться следующим образом:

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

Пример: мы обсуждали изменение времени начала лекции, проводимой Точилкиным в аудитории 3 с 9:30 на 9:00 с помощью функции ПРИСВОИТЬ. Чтобы произошло, если бы кто-то еще захотел использовать ту же аудиторию с 9:00 до 12:00.

 

Если допустить изменения без каких-либо дополнительных действий произошла бы «накладка». Избежать этого можно следующим образом: когда Точилкин меняет время начала лекции, автоматически должна вызываться процедура, проверяющая для всех объектов время начала и окончания лекций в аудитории №3. Если обнаружена конфликтная ситуация, Точилкин должен быть поставлен в известность и должен принять соответствующее решение.

 

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

 

Возможное решение может быть следующим:

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

  1. Поставить в начале имени атрибута символ «*».
  2. Когда подпрограмма Присвоить обнаруживает такой атрибут она должна знать, что нужно вызвать соответствующую процедуру.
  3. Имя вызываемой процедуры указать в следующем за отмеченным атрибуте.

 

Создать_структуру(Имя_структуры = Лекция,

Число_атрибутов = 7,

Атрибут = Зал,

Атрибут = Предмет,

Атрибут = Докладчик,

Атрибут = *Начало,

Атрибут = Процедура,

Атрибут = *Окончание,

Атрибут = Процедура).

 

Слоты процедур будут применяться при создании объектов структуры Лекция для указания имен процедур, которые должны вызываться из функции Присвоить при изменении атрибутов Начало и Окончание.

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

Создать_объект(Имя_структуры = Лекция,

Имя_объекта = П-41,

Зал = 3,

Предмет = Системы ИИ,

Докладчик = Точилкин,

Начало = 9:00,

Процедура = Имя_процедуры,

Окончание = 12:00,

Процедура = Имя_процедуры).

 

Говоря более подробно, подпрограмма, реализующая функцию Присвоить, выполняет следующие действия:

  1. Находит адрес структуры в памяти.
  2. Просмотрит имена атрибутов, для которых запрошено изменение значений.
  3. Если перед именем стоит *, подготовит вызов процедуры.
  4. Найдет адрес объекта в памяти.
  5. При необходимости вызовет соответствующую процедуру или просто изменит значение атрибута.

 

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


Дата добавления: 2014-12-19; просмотров: 6 | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2018 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав