Студопедия Главная Случайная страница Обратная связь

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

Пример 14.2. Классы логических элементов source и led





(defclass SOURCE

(is-a NO-INPUT ONE-OUTPUT COMPONENT)

(role concrete)

(slot output-1 (default UNDEFINED)

(create-accessor write))

)

(defclass LED

(is-a ONE-INPUT NO-OUTPUT COMPONENT)

(role concrete)

)

Класс source реализует поведение источника. Этот логический элемент имеет один выход и не имеет входов. Класс led является реализацией логического индикатора. Он имеет один вход и не имеет выходов. В дальнейшем при создании экспертной системы многократно придется решать проблему сбора результата обработки входных сигналов со всех индикаторов логической схемы. Для решения этой задачи предназначена следующая функция:

Пример 14.3. Функция LED-response

(deffunction LED-response ()

(bind?response (create$))

(do-for-all-instances ((?ledLED)) TRUE

(bind?response (create$?response

(send?led get-input-1))))

?response

)

Эта функция собирает составное поле из значений, хранящихся во всех объектах класса led текущей логической схемы, с помощью функции do-for-all-instances.

Приступим к реализации более сложных логических элементов. Их реализация будет напоминать классы source и led, за исключением того, что остальные логические элементы должны переопределять обработчик compute-output, который будет производить обработку сигнала, полученного на входе элемента.

 

Пример 14.4. Класс not-gate

(defclass NOT-GATE

(is-a ONE-INPUT ONE-OUTPUT COMPONENT)

(role concrete)

)

(deffunction not # (?x) (- 1?x))

(defmessage-handler NOT-GATE compute-output ()

(if (integerp?self: input-1) then

(send?self put-output-1 (not #?self: input-1)))

)

Обратите внимание, что в реализации обработчика compute-output используется функция not#, которая и выполняет необходимые вычисления. Определение класса not-gate чрезвычайно компактно, однако, благодаря использованию продуманной иерархии классов и множественного наследования, класс обладает всей необходимой функциональностью. Классы остальных логических элементов реализуем аналогично.

Пример 14.5. Классы остальных логических элементов

(defclass AND-GATE

(is-a TWO-INPUT ONE-OUTPUT COMPONENT)

(role concrete)

)

(deffunction andt (?x?y)

(if (and (!=?x 0) (!=?y 0)) then 1 else 0))

(defmessage-handler AND-GATE compute-output ()

(if (and (integerp?self: input-1)

(integerp?self: input-2)) then

(send?self put-output-1

(and#?self: input-1?self: input-2))

)

(defclass OR- GATE

(is-a TWO- INPUT ONE-OUTPUT COMPONENT)

(role concrete)

)

(deffunction or# (?x?y)

(if (or (!=?x 0) (!-?y 0)) then 1 else 0))

(defmessage-handler OR-GATE compute-output ()

(if (and (integerp?self: input- 1)

(integerp?self: input-2)) then

(send?self put-output-1

(or#?self:input-l?self: input-2)))

)

(defclass NAND-GATE

(is-a TWO- INPUT ONE-OUTPUT COMPONENT)

(role concrete)

)

(deffunction nand# (?x?y)

(if (not (and (!=?x 0) (!=?y 0))) then 1 else 0))

(defmessage-handler NAND-GATE compute-output ()

(if (and (integerp?self: input-1)

(integerp?self: input-2)) then

(send?self put-output-1

(nand#?self: input-1?self: input-2)))

)

(defclass XOR-GATE

(is-a TWO-INPUT ONE-OUTPUT COMPONENT)

(role concrete)

)

(deffunction xor# (?x?y)

(if (or (and (=?x 1) (=?y 0))

(and (=?x 0) (=?y 1))) then 1 else 0))

(defmessage-handler XOR-GATE compute-output ()

(if (and (integerp?self: input-1)

(integerp?self: input-2)) then

(send?self put-output-1

(xor#?self:input-l?self: input-2)))

)

(defclass SPLITTER

(is-a ONE-INPUT TWO-OUTPUT COMPONENT)

(role concrete)

)

(defmessage-handler SPLITTER compute-output ()

(if (integerp?self: input-1) then

(send?self put-output-1?self:input-1)

(send?self put-output-2?self:input-1))

)

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

Связь логических элементов

После создания набора классов, необходимого для представления всех используемых логических элементов, встает вопрос объединения этих элементов в логическую схему.

Для ввода в систему набора элементов, необходимых для создания заданной логической схемы, будем использовать отдельный файл с конструктором definstances. Ниже приведен пример такого конструктора для схемы, изображенной на рис. 14.2.







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




Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

ЛЕКАРСТВЕННЫЕ ФОРМЫ ДЛЯ ИНЪЕКЦИЙ К лекарственным формам для инъекций относятся водные, спиртовые и масляные растворы, суспензии, эмульсии, ново­галеновые препараты, жидкие органопрепараты и жидкие экс­тракты, а также порошки и таблетки для имплантации...

Тема 5. Организационная структура управления гостиницей 1. Виды организационно – управленческих структур. 2. Организационно – управленческая структура современного ТГК...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

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

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

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