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



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

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

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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

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

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

Расчет концентрации титрованных растворов с помощью поправочного коэффициента При выполнении серийных анализов ГОСТ или ведомственная инструкция обычно предусматривают применение раствора заданной концентрации или заданного титра...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

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

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