(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, такое как целое или строковое.