Пример 11.13. Наследование слотов

(defclass A (is-a USER)

(slot fooA)

(slot barA))

(defclass B (is-a A)

(slot fooB)

(slot barB))

Список предшествования для класса A: A USER OBJECT. Экземпляр класса A будет иметь два слота: fooA и barА. Список предшествования для класса B: B A USER OBJECT. Экземпляр класса в будет иметь четыре слота: fooB, barB, fooA и barА.

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

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

Тип слота

Слот может содержать значение либо простого, либо составного поля. Клю­чевое слово myltislot определяет, что слот может содержать значение со­ставного поля, состоящее, возможно, из пустой последовательности полей. Ключевое слово slot или single-slot определяет, что слот может содержать только одно значение. Значениями составного слота разрешено манипули­ровать с помощью стандартных функций для составных полей, таких как nth$ и length$, начиная с момента присвоения им некоторого значения. COOL также предоставляет функции для установки составных слотов, на­пример, slot-insert$. Простой слот может содержать любое значение при­митивного типа CLIPS, такое как целое или строковое.


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



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