BigEdu.ru

Generaliting Dispatching in 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 ))) ;

ENDIF

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 классов.

В классической модели заклинание интерпретируется как сооб-

щение, посланное объекту-приемнику. При этом действия диспетчера

частично определяются его параметрами. Соответственно, при появ-

лении нового сообщения, программист

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Рефераты по информатике и программированию Generalizing Dispatching in a Distributed Object System. Введение. Сегодня существует множество объектных систем, включая сис- темы
Оценок: 1007 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru