COOL предоставляет полезную возможность составления наборов объектов (instance-set) и выполнения некоторых действий над таким набором. Система запросов для составления наборов объектов в COOL состоит из шести функций, каждая из которых оперирует набором объектов, определенным с помощью заданного пользователем критерия.
В последующих разделах будут описаны способы формирования шаблонов наборов, запросов и действий над наборами. В приведенных ниже примерах предполагается, что определения, указанные в примере 11.46, уже присутствуют в системе.
Пример 11.46. Необходимые классы и объекты
(defclass PERSON (is-a USER)
(role abstract)
(slot sex (access read-only)
(storage shared))
(slot age (type NUMBER)
(visibility public)))
(defmessage-handler PERSON put-age (?value)
(dynamic-put age?value))
(defclass FEMALE (is-a PERSON)
(role abstract)
(slot sex (source composite)
(default female)))
(defclass MALE (is-a PERSON)
(role abstract)
(slot sex (source composite)
(default male)))
(defclass GIRL (is-a FEMALE)
(role concrete)
(slot age (source composite)
(default 4)
(range 0.0 17.9)))))
(defclass WOMAN (is-a FEMALE)
(role concrete)
(slot age (source composite)
(default 25)
(range 18.0 100.0)))
(defclass BOY (is-a MALE)
(role concrete)
(slot age (source composite)
|
|
(default 4)
(range 0.0 17.9)))
(defclass MAN (is-a MALE)
(role concrete)
(slot age (source composite)
(default 25)
(range 18.0 100.0)))
(definstances PEOPLE
(Man-1 of MAN (age 18))
(Man-2 of MAN (age 60))
(Woman-1 of WOMAN (age 18))
(Woman-2 of WOMAN (age 60))
(Woman-3 of WOMAN)
(Boy-1 of BOY (age 8))
(Boy-2 of BOY)
(Boy-3 of BOY)
(Boy-4 of BOY)
(Girl-1 of GIRL (age 8))
(Girl-2 of GIRL))
Определение набора объектов
Набор объектов (instance-set) — это упорядоченная коллекция объектов, определенных пользователем классов. Каждый член набора объектов (instance-set member) — объект некоторого набора классов, называемых ограничениями классов (class restrictions). Различные ограничения классов могут задаваться для каждого члена набора объектов. Ограничения вместе с переменными (instance-set member variables), с которыми будут связываться соответствующие члены набора, называются шаблоном набора (instance-set templates). Функции запросов используют шаблон для генерации самого набора объектов. В ограничении классов может быть задан модуль (см. гл. 12), где определен класс. Если модуль не задан, будут использоваться определения классов, созданных в текущем модуле.