Пример 16.5. Работа с командой describe-class
(clear) (defclass CHILD (is-a USER) (role abstract) (multislot parents (cardinality 2 2)) (slot age (type INTEGER) (range 0 18)) (slot sex (access read-only) (type SYMBOL) (allowed-symbols male female) (storage shared)) ) (defclass BOY (is-a CHILD) (slot sex (source composite) (default male)) ) (defmessage-handler BOY play () (printout t "The boy is now playing..." crlf)) (describe-class CHILD) Результат выполнения приведенных выше команд представлен на рис. 16.4. В табл. 16.11 содержится список полей и их возможные значения, использующиеся для описания свойств и граней слотов заданного класса. Таблица 16.11. Поля, использующиеся для описания свойств и граней слотов заданного класса
Рис. 16.4. Результат выполнения команд из примера 16.5
Помимо описания граней слотов команда describe-dass отображает также список всех ограничений типов, используемых для каждого слота. Список сокращений, применяемых для описания ограничений, приведен в табл. 16.12. В случае если определенный тип отмечен знаком +, то слот может содержать любые значения соответствующего типа. Если тип отмечен знаком #, это означает, что слот может принимать только некоторые заданные значения этого типа. Таблица 16.12. Используемые сокращения
Команда browse-classes предназначена для отображения в диалоговом окне системы иерархии наследования классов, определенных в данный момент в системе. Определение 16.59. Команда browse-classes (browse-classes [<имя-класса>]) В случае если необязательный аргумент <имя-класса> не задан, CLIPS отобразит дерево наследования классов, начиная с предопределенного класса object. Если указать имя конкретного класса, CLIPS выведет дерево наследования заданного класса. Некоторые классы могут появляться в дереве наследования несколько раз при использовании множественного наследования. Символом * отмечаются классы, являющиеся прямыми наследниками более чем одного класса.
|