Работа с объектами

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

Определение 11.15. Синтаксис функции send

(send <объект> <имя-сообщения> [<аргументы>])

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

Ø объекты некоторых системных классов (например, вещественные и целые числа, символы, строки, составные значения, адреса фактов, внешние адреса) могут обрабатываться стандартным образом без использования сообщений;

Ø создание и инициализация объекта определенного пользователем класса

выполняется с помощью системной функции make-instance.

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

Создание объекта

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

Для создания и инициализации нового объекта служит функция make-instance. Она неявно посылает инициализирующие сообщения каждому новому объекту после его размещения в памяти. При желании пользователь может влиять на процесс инициализации с помощью обработчика-демона. Функция make-instance также позволяет переопределять значения слотов для изменения любого значения по умолчанию. Она автоматически приостанавливает процесс сопоставления образцов в правилах для всех активных объектов до тех пор, пока процесс создания объекта не будет завершен. Функция active-make-instance также позволяет создавать новые объекты определенных пользователем классов, но не вызывает задержки процесса сопоставления образцов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: