Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример 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), где определен класс. Если модуль не задан, будут использоваться определения классов, созданных в текущем модуле. Определение 11.30. Синтаксис шаблона набора объектов < шаблон-набора-объектов>:: = (< члены-шаблона-наборов-объекта>) < член-шаблона-наборов-объекта>:: =(< переменная-набора-объектов> < ограничения-классов>) < переменная-набора-объектов>:: = < простая-переменная> < ограничения-классов>:: = < имена-классов> В качестве примера можно привести шаблон, выбирающий пары объектов персон противоположного пола. Пример 11.47. Шаблон, выбирающий пары персон противоположного пола ((? man-or-boy BOY MAN) (? woman-or-girl GIRL WOMAN)) Этот шаблон можно представить также в эквивалентной форме. Пример 11.48. Эквивалентная форма предыдущего шаблона ((? man-or-boy MALE) (? woman-or-girl FEMALE)) В данном примере переменные? man-or-boy и? woman-or-giri ограничиваются только с помощью имен классов.
|