Раздел 7 Объектно-ориентированное программирование

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

  • Язык KRL В качестве "строительных блоков" системы использованы так называемые "концептуальные объекты", которые были сходны с фреймами, предложенными Минским, в том, что представляют прототипы и связанные с ними свойства.
  • Объектно-ориентированный стиль программирования идеально подходит для решения проблем, требующих детального представления объектов реального мира и динамических отношений между ними. Классическим примером применения данного подхода являются задачи моделирования
  • В результате основной упор переносится с разработки общей управляющей структуры программы, которая ответственна за порядок обращения к функциям, на конструирование самих объектов, выяснение их ролей и создание протоколов взаимодействия объектов.
  • С этой проблемой впервые столкнулись при разработке объектно-ориентированного языка FLAVORS, который поддерживает множественное наследование и наложение методов
  • В более поздних реализациях SmallTalk метакласс формировался автоматически всякий раз, когда создавался новый класс, и этот класс становился экземпляром класса Metaclass.
  • Появление языка Common LISP было связано с попыткой стандартизировать многочисленные диалекты LISP и создать устраивающую большинство пользователей версию этого языка.
  • Если планируется создавать экземпляры любого класса, производного от USER, то этот класс нужно объявлять с квалификатором concrete, как это и сделано при объявлении класса republican-quaker.
  • Как и в языке FLAVORS, before-методы (предварительные методы) используются для подготовки данных для тех вычислений, которые должны быть выполнены primary-методом (основным методом), а after-методы (заключительные-методы) используются для выполнения заключительных операций.
  • build-in-class. Это метакласс тех классов объектов, которые реализованы необычным способом. Например, некоторые из таких классов могут соответствовать типам данных Common LISP. Большинство системных классов имеет именно этот метакласс.
  • В языке C++ множественное наследование трактуется совсем не так, как мы это делали в предшествующих разделах настоящей главы, а потому этот вопрос заслуживает подробного обсуждения.
  • Философия и технология объектно-ориентированного программирования могут весьма пригодиться проектировщику экспертных систем.
  • В чем состоит отличие между конкретными и абстрактными классами?

    2. В чем состоит отличие между конкретными и абстрактными классами?

    3. Почему при множественном наследовании иерархическая структура превращается в гетерархическую?

    4. В чем состоит проблема наложения методов при множественном наследовании?

    5. Что такое метакласс и в чем польза применения такой конструкции?

    6. Что понимается под термином "список предшествования классов"? 7. Рассмотрите схему отношений между классами на рис. 7.9.

    Используя конструкцию def class языка CLIPS, опишите эту структуру классов таким образом, чтобы соблюдался следующий порядок наследования в классах, имеющих несколько суперклассов:

    wkg-man: (man worker) father: (parent man)

    wkg-woman: (worker woman) mother: (parent woman)

    wkg-father: (wkg-man father)

    wkg-raother: (mother wrk-woman)

    Начните с класса person:

    (defclass person (is-a USER) (role concrete))

    Какой вид будет иметь список предшествования классов wkg-father и wkg-mother?

  • Примеры решения типовых задач математика, физика, электротехника