Основные возможности ООП
Любая объектно-ориентированная система должна обладать следующими пятью характеристиками: абстрактностью, инкапсуляцией, наследованием, полиморфизмом и динамическим связыванием. Абстракция — это способ представления данных на определенном уровне некоторой конкретной проблемной области. Инкапсуляция — это процесс, позволяющий скрывать детали реализации объекта с помощью некоторого определенного для этого класса внешнего интерфейса. Наследование позволяет определять классы, использующие определения других классов и обладающие всеми их и некоторыми своими свойствами, если это необходимо. Полиморфизм — свойство, благодаря которому различные объекты по-разному реагируют на одни и те же сообщения. Динамическое связывание является возможностью выбирать определенный обработчик сообщения объекта во время выполнения программы. Рассмотрим теперь, как CLIPS реализует все эти основные свойства системы ООП.
Создание нового класса реализует возможность абстрактного представления нового типа данных. Слоты и обработчики сообщений этого класса определяют свойства и поведение целой группы объектов, принадлежащих этому классу.
Инкапсуляция реализуется в CLIPS требованием обязательно использовать сообщения при работе с объектами определенных пользователем классов. Обработчики сообщений класса представляют собой доступный пользователю интерфейс, скрывающий реализацию класса.
COOL поддерживает множественное наследование. Это означает, что некоторый класс может обладать всеми свойствами указанного одного или более суперкласса. Для установления линейного порядка наследования свойств классов при множественном наследовании COOL использует список предшествования классов (class precedence list), построенный с использованием иерархии наследования. Объект, представляющий собой экземпляр нового класса, наследует все свойства (слоты) и поведение (обработчики сообщений) каждого класса из списка предшествования классов. Слово "предшествование" обозначает, что свойства и поведение класса, находящегося ближе к началу списка, переопределяют конфликтующие определения ранее встретившихся классов.
Различные COOL-объекты могут реагировать на одно и то же сообщение совершенно по-разному. Это реализует свойство полиморфизма. На практике это выполняется присоединением к разным классам обработчиков одного и того же сообщения, но с разными последовательностями выполняемых действий.
CLIPS также поддерживает возможность динамического связывания, реализуемую с помощью функции send, предназначенной для посылки сообщений объекту. Вызов этой функции осуществляется именно в процессе выполнения программы, таким образом, определение обработчика выполняющегося в тот или иноймомент также происходит в процессе выполнения программы. Например, функция send может получать в качестве параметра переменную, которая в разные моменты времени ссылается на различные объекты, при этом могут вызываться совершенно разные обработчики. Подробно процесс определения нужного обработчика описан в гл. 11.
Дата добавления: 2021-12-14; просмотров: 284;