Для иллюстрации работы этого класса систем рассмотрим иерархию понятия отчета, структура которого определена выше, но уже со всеми слотами, их значениями и процедурами (рис. 6.3).
Допустим, что некоторые слоты имеют значение по умолчанию. Каким образом можно использовать так организованные данные?
Если системе задан запрос: «Мне нужен финансовый отчет о выполнении проекта по новой технологии», то интерфейсная программа анализирует его и:
0. Вносит «проект по новой технологии» в слот «ТЕМА» следующего пустого узла «Финотчет» (в нашем примере это узел №3). Далее все происходит автоматически.
|
Рис. 6.3 - Функционирование фреймовой системы
1. Процедура «если - добавлено», связанная со слотом «ТЕМА», осуществляет поиск руководителя этого проекта. Допустим, что его фамилия Иванов. Процедура вписывает его фамилию в слот «АВТОР» финансового отчета №3. Если руководитель этой темы не будет найден, в слот «АВТОР» будет
наследовано значение класса, а именно текст «РУКОВОДИТЕЛЬ ПРОЕКТА».
|
|
2. Процедура «если - добавлено», связанная со слотом «АВТОР», начинает выполняться, т.к. в слот только что было вписано новое значение. Эта процедура начинает составлять сообщение, чтобы отправить его Иванову, но обнаруживает, что нет нужной даты исполнения.
3. Процедура «если — добавлено», просматривая слот «ДАТА» и найдя его пустым, активирует процедуру «если — нужно», связанную с этим слотом, которая, анализируя текущую дату (например 12.04.06), решит, что «30 июня» ближайшее к ней и впишет эту дату в слот «ДАТА».
4. Теперь процедура «если - добавлено», связанная со слотом «АВТОР», найдет, что еще одно значение, которое нужно включить в сообщение, т.е. объем отчета, отсутствует. Слот «ОБЪЕМ» не связан с процедурами и ничем помочь не может. Однако выше узла № 5 существует узел общей концепции финансового отчета, содержащий значение объема. Процедура, используя концепцию наследования свойств класса, использует значение объема и составляет следующее сообщение: «Господин Иванов, подготовьте финансовый отчет по проекту новой технологии к 30 июня объемом 2 страницы». Если в какой-то момент фамилия Иванов будет удалена из слота «АВТОР», то система автоматически отправит ему сообщение, что его отчет не требуется.
В рассмотренном примере заполнителями служили конкретные
экземпляры атрибутов (заполняемые по умолчанию). Вместе с тем,
заполнителями слотов могут быть:
- имена других фреймов системы, на которые делается ссылка;
- фасеты («агрегат», «диапазон», «по умолчанию» и др.).
Расширим рассмотренный выше пример для иллюстрации этих понятий (рис. 6.4.).
При определении фреймов фасет «агрегат» указывает на то, что должны быть заданы требуемые объекты, а «интервал» - на то, что должен быть выбран один из множества объектов.
Рис. 6.4 - Функционирование фреймовой системы