Пример 4.12. Объекты и их классы
Объекты (вид, отображаемый на экран) Классы
Rolls-Royce SYMBOL
"Rolls-Royce" STRING
8.0 FLOAT
8 INTEGER
(8.0 Rolls-Royce 8 [Rolls-Royce]) MULTIFIELD
<Pointer- OOCF61AB> EXTERNAL-ADDRESS
[Rolls-Royce] CAR (класс, определенный пользователем)
Объекты CLIPS разделяются на две важные категории: объекты, хранящие примитивные типы данных, и объекты классов, определенных пользователем. Объекты этих двух типов отличаются способом своего создания и удаления, наборами свойств и даже методом использования.
Объекты примитивных типов неявно создаются и удаляются системой CLIPS в местах, где это необходимо. По ссылке на такой объект можно получить хранящееся в нем значение соответствующего типа. Объекты примитивных типов не имеют слотов и, как правило, не имеют имен. Классы, определяющие эти объекты, являются предопределенными классами CLIPS. Функциональность предопределенных классов, определяющих объекты примитивных типов, подобна функциональности классов, определенных пользователем, за исключением того, что к таким классам нельзя присоединить обработчики сообщений. Это делает не очень удобным использование таких классов в объектно-ориентированном программировании. Основным назначением объектов примитивных типов является использование их в определении родовых функций. Родовые функции применяют эти объекты в качестве своих аргументов и, по заданному набору, в момент вызова, определяют, какой именно метод родовой функции должен быть вызван. Более подробно данный процесс изложен в гл. 10.
Для ссылки на объект класса, определенного пользователем, необходимо использовать имя или адрес объекта. Такие объекты явно создаются или удаляются с помощью сообщений или специальных системных функций. Свойства объекта класса, определенного пользователем, определяются набором слотов, заданных при определении класса. Слот объекта имеет имя и может содержать простое или составное значение. Например, объект Rolls-Royce является объектом созданного пользователем класса car. Один из слотов такого объекта может, например, содержать цену автомобиля со значением 75 000. Поведение объектов определяется наличием тех или иных обработчиков сообщений, присоединенных к соответствующему классу. Обработчики сообщений и способы работы с объектами подробно описаны в гл. 11. Все объекты одного класса имеют одинаковые наборы слотов, но могут содержать в этих слотах различные значения. Однако, если два объекта имеют одинаковые наборы слотов, это еще не означает, что они принадлежат одному классу, т. к. два абсолютно разных класса, теоретически, могут иметь одинаковые наборы слотов.
Основная разница между слотами объекта и неупорядоченного факта заключается в возможности наследования. Наследование позволяет использовать в классе некоторые свойства и поведение, определенные в другом классе. COOL (объектно-ориентированная часть языка CLIPS) поддерживает множественное наследование, при котором класс может наследовать слоты и обработчики сообщений непосредственно от нескольких классов.
Дата добавления: 2021-12-14; просмотров: 293;