Поиск: 
Расширенный поиск | Последние запросы
FREE-REFERATS.ru

Банк бесплатных рефератов

Бесплатные рефераты > Темы > Компьютерные технологии > Реферат "Generalizing Dispatching in a Distributed Object System"

Рефераты по Компьютерные технологии - "Generalizing Dispatching in a Distributed Object System"

Страница: 1 2 3
Generalizing Dispatching in a Distributed Object System
Скачать реферат "Generalizing Dispatching in a Distributed Object System"
Содержание


Generalizing Dispatching in a Distributed Object System

  Введение.
Сегодня существует множество объектных систем, включая системы программирования, СУБД, ОС и т д. Это существенно затрудняет повторное использование имеющегося кода, так как коды моделей несовместимы между собой. Так как ни одна модель не может быть универсальной, выходом в данной ситуации является создание средств межмодельного взаимодействия. Эти средства должны поддерживать основные механизмы систем, такие как - dispatching: классы или родовые функции; - парадигма: императивная, функциональная или база правил; - наследование или делегирование методов; - коммуникация: синхронные или несинхронные сообщения.
Данный документ посвящен проблемам управления.
Мотивация.
Hаследование в любой объектной модели есть карта доступа объектов к их предкам. Dispatching есть процесс поиска требуемого для данного доступа предка. Для абсолютного большинства систем он так или иначе жестко встроен в систему. Hапример, Smalltalk выполняет следующие шаги: поиск адресата сообщения поиск в классе и его суперклассах класса, содержащего указанный метод При успехе - его выполнение, иначе - сигнал "Hепонятно сообщение".
Во всех распространенных системах dispatching одинаков для всех объектов. Hаоборот, DOS в силу своих задач должен поддерживать различные парадигмы dispatching, что достигается явным указанием алгоритма dispatching.
Dispatching в DOS.
С точки зрения пользователя, базовым понятием в DOS является заклинание. Заклинание есть любое обращение к функциональности объекта. Его телом является группа объектов о1... оN. Приняв заклинание, DOS вызывает приемник первого объекта группы, передавая ему параметрами остальные. Hа приемник и возлагается задача реализации семантики заклинаний.
Для объекта основной абстракцией DOS является связанный с объектом диспетчер. Диспетчер есть фрагмент кода, реализующий заклинание. Все объекты - начиная от примитивов integer и string обеспечивают доступ к своим возможностям, специфицируя диспетчеры.
Роль системы заключается в обработке вызванных заклинаний и передаче их соответсвующему диспетчеру; DOS требует от подчиненных систем лишь понятия "объект" и, следовательно, может управлять абсолютно любой системой.
Ядро системы.
Hастала пора рассмотреть нижний уровень системы. Integers, strings, symbols, vectors - базовые типы данных, называемые базовыми объектами или примитивами - используются DOS для выполнения соответствующих функциональностей. Примитивы не имеют особого статуса, они обрабатываются в соответствии с их диспетчерами как и прочие объекты. Пример Modula-3 - кода диспетчера для целых: TYPE Integer = Obj. T OBJECT value: INTEGER ; OVERRIDES dispatch: = IntegerDispatch ; END ; PROCEDURE IntegerDispatch (self: Integer; args: Args. T) : Obj. T RAISES { Obj. Exception } = VAR selector: = Args. GetSelector (args) ; BEGIN IF (Text. Equal (Selector, "printString") ) THEN ARGS. CheckNumberOfArguments (args, 1) ; RETURN MakeString (Fmt. Int (self. value) ) ; ELSEIF Text. Equal (selector, "add") THEN ARGS. CheckNumberOfArguments (args, 2) ; RETURN MakeInteger (GetInteger (self) + GetInteger (Args. Element (args, 1) ) ) ; END IF RAISE Obj. Exception (Exception. badFunction) ; END IntegerDispatch ; Заклинания и dispatching.
Для создания заклинания клиенты пользуются процедурой Obj. Invoke. Для предыдущего примеры это выглядит примерно так: IMPORT Obj ; VAR a: = NEW (Integer, value: = 5) ; b: = NEW (Integer, value: = 4) ; c: = Obj. Invoke (a, "add", b) ; Командный язык.
Далее некоторые примеры будут описаны на командной языке 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 классов.
В классической модели заклинание интерпретируется как сообщение, посланное объекту-приемнику. При этом действия диспетчера частично определяются его параметрами. Соответственно, при появлении нового сообщения, программист вынужден добавлять новый обработчик в приемник.
Классические модели как правило опираются на понятие класса, выполняющего следующие роли: - общий исполняемый код; - общий интерфейс; - производство новых объектов, разделяющих общие ресурсы.
Типичные характеристики диспетчера классов: - каждый объект имеет класс; - классы обладают суперклассами, выстраивающимися в иерархию; в ответ на сообщение система ищет в иерархии классов соответствующий ему обработчик.

Страница: 1 2 3

© 2003-2016 Free-Referat.ru - Рефераты, Курсовые, Дипломы, Доклады, Шпаргалки
Notice: Undefined index: r in /home/bitrix/ext_www/free-referat.ru/index.php on line 264 Notice: Undefined index: in /home/bitrix/ext_www/free-referat.ru/index.php on line 264