Generalizing dispatching in a distributed object system
Далее некоторые примеры будут описаны на командной языке DOS. Он не является ни неотъемлемой частью DOS, ни даже законченным языком программирования это просто средство для легкого описания и использования объектов. Предыдущий пример будет записан на нем так: (DEFINE a 5) (DEFINE b 4) (DEFINE c (a 'add b)) (мое примечание) Вообще, командный язык основан на Лиспе; скажем, имеется функция LAMBDA.
Эксперименты с dispatching.
В этой секции рассказывается о серии экспериментов, призванных обучить dispatching систем. Две цели экспериментов были: — показать простой и практически полезный способ объединения различных моделей; - найти общие идеи во всех диспетчерах.
Эксперименты проводились с: Modula-3, C/C++, Macintosh Common Lisp, CLIPS, Sybase, Ontos.
Dispatching классов.
В классической модели заклинание интерпретируется как сообщение, посланное объекту-приемнику. При этом действия диспетчера частично определяются его параметрами. Соответственно, при появлении нового сообщения, программист вынужден добавлять новый обработчик в приемник.
Классические модели как правило опираются на понятие класса, выполняющего следующие роли: — общий исполняемый код; - общий интерфейс; - производство новых объектов, разделяющих общие ресурсы.
Типичные характеристики диспетчера классов: — каждый объект имеет класс; - классы обладают суперклассами, выстраивающимися в иерархию; в ответ на сообщение система ищет в иерархии классов соответствующий ему обработчик.
Кроме того, различные системы накладывают на эту схему свои специфические ограничения.