Студопедия — Пример 14.2. Классы логических элементов source и led
Студопедия Главная Случайная страница Обратная связь

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

Пример 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; просмотров: 503. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

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

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

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

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

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

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

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

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