Студопедия — Визуальные инструменты для работы с родовыми функциями
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Визуальные инструменты для работы с родовыми функциями






В заключение данной главы рассмотрим визуальные инструменты, которые предоставляет CLIPS для работы с родовыми функциями (подробное описание функций и команд для работы с родовыми функциями и их методами см. в гл. /5 и 16).

Для работы с родовыми функциями Windows-версия среды CLIPS предос­тавляет инструмент — Defgeneric Manager (Менеджер родовых функций). Для его запуска выберите пункт Defgeneric Manager в меню Browse. Соот­ветствующий пункт в меню недоступен, если в данный момент в среде не определена ни одна родовая функция. Общий вид менеджера представлен на рис. 10.1.

Рис. 10.1. Окно менеджера родовых функций

Общее количество родовых функций отображается в заголовке окна менед­жера — Defgeneric Manager — 2 Items. С помощью этого инструмента вы можете удалить родовую функцию из системы (кнопка Remove),вывести на экран ее определение (кнопка Pprint),установить режим просмотра вызова отдельной функции и вызвать менеджер методов для заданной функции (кнопка Methods).

Учтите, что удаление родовой функции приводит к удалению всех ее ме­тодов.

Для тренировки использования родовых функций и менеджера родовых функций очистите CLIPS и добавьте в него методы, приведенные в приме­ре 10.11.

 

Пример 10.11. Перегрузка функции +

(defmethod + ((?a INTEGER (>?а 0)) (?b INTEGER (>?b 0)))

(call-next-method))

(defmethod + ((?a INTEGER) (?b FLOAT))

(call-next-method))

(defmethod + ((?a FLOAT) (?b FLOAT))

(call-next-method))

(defmethod + ((?a STRING) (?b STRING))

(str-cat?a?b))

Обратите внимание на реализацию методов для сложения чисел. После проверки своих аргументов они просто вызывают системную функцию +. Если бы мы вместо вызова (call-next-method) использовали системную функция + напрямую (+?а?b), то получили бы бесконечную рекурсию, которая привела бы к переполнению стека и аварийному завершению про­граммы.

Попробуйте несколько раз вызвать функцию + с различными аргументами:

 

Пример 10.12. Тестирование родовой функции +

(+ "Hello " "World")

(+ 1 3)

(+ 1 3.5)

(+ 1.5 3)

(+ 1 -3)

(+ 1.5 3.0)

(+ 1.5 3.0 5.0)

(+"Hello " "World" "!!!")

(+ 1 3.5 4)

Полученный результат должен соответствовать приведенному на рис. 10.2.

Обратите внимание, что для вызовов (+ 1.5 3), (+ 1 -3), (+ 1.5 3.0 5.0), (+ 1 3.5 4) применяется вызов системной функции +, т. к. мы не опреде­лили методов, способных принять такие аргументы, но, тем не менее, мы получили корректные ответы. Родовое связывание не смогло подобрать ме­тод, применимый к вызову (+"Hello " "World" "!!!") (наша функция для конкатенации строк принимает строго два аргумента), поэтому мы получи­ли соответствующее сообщение об ошибке.

Установите режим отображения вызова родовой функции с помощью ме­неджера и попробуйте еще раз повторить вызовы, приведенные выше. Об­ратите внимание на сообщения о вызовах родовой функции.

Рис. 10.2. Результаты тестирования родовой функции +

 

Рис. 10.3. Окно менеджера методов родовой функции

Defmethod-Handler Manager (Менеджер методов родовой функции) — еще один инструмент, предоставляемый CLIPS. Внешний вид этого инструмента представлен на рис. 10.3. Этот инструмент выводит на экран список мето­дов родовой функции, указанной менеджером родовых функций. Список методов сортируется по приоритету, установленному для этих методов. Общее количество методов заданной родовой функции отображается в заголовке окна менеджера — Defmethod-Handler Manager — 5 Items (in precedence order).

С помощью менеджера методов вы можете удалить некоторый метод (кнопка Remove), вывести на экран его определение (кнопка Pprint) или устано­вить режим просмотра вызовов отдельного метода. Обратите внимание, что метод, неявно определенный системой, например метод, представляющий системную функцию +, не может быть удален.

Снимите установку вывода сообщений о вызове родовой функции + и установите вывод сообщений о вызове методов с помощью менеджера методов. Выполните следующие вызовы:

Пример 10.13. Тестирование родовой функции +

(+ "Hello " "World")

(+ 1 3)

(+ 1 3.5)

(+ 1 -3)

Результат этих действий представлен на рис. 10.4.

Обратите внимание, что, в случае получения сообщений о вызове конкрет­ного метода родовой функции, мы можем получить информацию о том, ка­кой именно метод обработал полученный вызов.

Рис. 10.4. Результаты тестирования родовой функции +

В случае если вы хотите установить режим просмотра вызовов всех методов или всех родовых функций, воспользуйтесь диалоговым окном Watch Options из меню Execution. Установите флажки в полях Generic Functions или/и Methods,как показано на рис. 10.5.

Рис. 10.5. Установка режима отображения вызовов родовых функций и методов

В данной главе была описана такая конструкция языка CLIPS, как родовые функции, методы их создания, приемы и способы использования, а также алгоритм родового связывания, делающий возможным функционирование родовых функций. Как вы успели заметить, в качестве ограничения типов для аргументов методов родовых функций используются классы. Внутренние классы CLIPS, а также объектно-ориентированный язык COOL (расширение CLIPS) будут рассмотрены в следующей главе.








Дата добавления: 2015-08-30; просмотров: 864. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия