Рекомендуемая литература. Упражнения.
Для ознакомления с общими концепциями объектно-ориентированных вычислений и их практической реализацией я бы рекомендовал статьи из сборника [Peterson, 1987].
Обзор работ по объектно-ориентированной технологии применительно к задачам искусственного интеллекта читатель найдет в [Stefik and Bobrow, 1986]. В работе [Кееnе, 1989] довольно подробно описан язык CLOS.
Подробное описание C++ и методики программирования на этом языке содержится в книгах [Booch, 1994] и [Meyers, 1995], [Meyers, 1997], хотя я и не в восторге от двух последних.
Упражнения
Упражнение 1
Чем отличаются объектно-ориентированные языки программирования от обычных процедурных языков?
Упражнение 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?
Рис. 7.9. Схема структуры классов для упражнения 7
Упражнение 8
Предположим, что классы на рис. 7.9 имеют следующие предпочтения при выборе блюд на завтрак:
man: donut woman: croissant parent: fruit worker: bacon
Закодируйте данные предпочтения в обработчиках сообщений этих классов таким образом, чтобы класс-получатель сообщения вернул наименование того блюда, которое он предпочитает.
Сформируйте следующие экземпляры классов:
Joan – экземпляр класса wrk-mother.
Jim – экземпляр класса wrk-man.
Передайте им сообщение, например, в такой форме:
(send [Joan] breakfast)
Чем ответят экземпляры Joan и Jim на такое сообщение и почему?