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

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

Пример 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 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

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