Ассоциация
Ассоциация – это обусловленная предшествующим опытом связь представлений, благодаря которой, одно представление, вызывает по сходству, смежности или противоположности другое. Представляет собой реализацию межклассовых отношений на основе ассоциативной связи двух классов, которая активизирована по заданному шаблону. При этом меню операционных свойств ассоциируемого класса будет доступно в меню ассоциирующего. На сегодняшний день стандартное понимание отношений классов оперирует практически только правилами наследования классов. Т.е. дочерний класс наследует свойства родительского класса.Такая иерархия классов присутствует и в технологии Nexus. Но дополнительно к этому, предварительно описав схему отображения, можно преобразовывать объекты одного класса в объекты другого без иерархического подчинения классов, что представляет собой реализацию качественно новых классовых отношений – полиморфных или полиморфизма.
Аналог ассоциации в рамках Nexus технологии соответствует вышеприведенному определению. На данный момент единственное отличие состоит в том, что шаблон ассоциации в Nexus технологии задается вручную человеком и не может изменяться или устанавливаться автоматически.
Если для текущего класса мы задаем шаблон ассоциации, то такой класс назовем ассоциирующим. Если мы находим классы или объекты классов, соответствующие заданному шаблону ассоциации и активизируем одну из найденных ассоциаций в списке, то такой класс назовем ассоциируемым.
По сути мы отказываемся от понятийного уровня класса и пытаемся найти по шаблону подходящий набор обработчиков. Нечто вроде эквивалентности без всякого понятия.
Например, m1*v1=m2*v2 – закон сохранения импульса
Видимо они ничем друг с другом не связаны, кроме как, произведение двух величин в первом состоянии равно произведению двух величин во втором состоянии. Т.е. шаблон ассоциации можно построить следующий: %1*%1=%2*%2, где %-есть любая величина не равная %%. Ну и тогда можно предположить, что, если кто-то нашел некоторое новое свойство в своей области: x1*y1=x2*y2 – закон xy, то это свойство м.б.
присуще и закону сохранения импульса и закону Бойля-Мариотта. Т.е. можно построить ассоциативную связь. Конечно, достоверность такой связи будет небольшой, пока не будет накоплен эмпирический материал.
При создании ассоциативных процедур мешает понятийная окраска столбцов таблиц. Т.е. что эффектно для человека совсем неэффективно на бессознательном уровне обработки.
Для class 1 – закона сохранения импульса m1*v1=m2*v2
хороша таблица для человека Impulse Law?( massa float, speed float),
для class 2 – закона Бойля-Мариотта Izoterms( pressure float, volume float)
Для ассоциации надо Impulse Law?( col11 float, col21 float) и Izoterms( col12 float, col22 float), тогда можно смело говорить о возможности написания одной процедуры для обеих таблиц по ассоциации col1 и col2. Очевидно, что понятийное именование столбцов таблицы вредит ассоциативному подходу и ограничивает обработку только на уровне понятийном, совершенно исключая ассоциативную (бессознательную) обработку информации.
Данный механизм отношений обуславливает появление в меню свойств ассоциирующих классов новых, но присущих им в соответствии с ассоциацией, свойств ассоциируемых классов.
Рассмотрим этот механизм отношений между классами объектов. Как все это происходит? Если шаблон ассоциации введен, тогда создадим список ассоциаций ассоциируемых классов;
после этого необходимо активизировать одну ассоциацию из найденного списка.
Когда это сделано, то в меню свойств ассоциирующего класса появляются свойства класса активной ассоциации.
Поскольку, участвующие в ассоциативном меню, процедуры должны работать
инвариантно классам, т.е. написанных специальным образом или работа которых не зависит от класса документа, то предлагается ручная вставка в контекст процедур.
Наполнение таблицы Assoc Cur List? обеспечивается заведением шаблона ассоциации
в описании ассоциирующего класса, создания списка ассоциаций и активизацией одной
из списка ассоциаций. Это реализовано только для авторожденных классов с гридом.
В getp ассоциирующего класса выбираются ассоциативные процедуры для активной ассоциации.
Этот контекст просто вставить в конец процедуры getp.
Begin Group? 'Ассоциация'
declare @CName varchar(128), @cmd varchar(128), @stmt int
select @CName=(select CName from Assoc Cur List?
if( @CName is not null and exists (select * from Oper Handlers? where class=@CName) )
begin
end
End Group?
В getp ассоциируемого класса публикуются ассоциативные процедуры. Для того, чтобы были доступны операционные свойства ассоциируемого класса необходимо добавить в конец getp следующие строки:
Описание:
Oper Clear?({'ClassName'}) – очистка таблицы Oper Handlers? для класса Class Name?;
Oper Write?({n},{'OperProc'},{'ClassName'},{'MenuItemName'}) – регистрация ассоциативной процедуры, где n – порядковый номер, Oper Proc? – название операционной процедуры, Class Name? – имя класса, Menu Item Name? – имя в меню.
В macro.sqh
Oper Write?(num,oper,class,name)=if(not exists(select * from Oper Handlers? where class={class} and oper={oper}) and exists (select * from sysobjects where name={oper})) insert into Oper Handlers?(num,status,comment,oper,class,opername,Eend) select {num},null,null,{oper},{class},{name},null Здесь дана только простая схема реализации.
Сразу появляется масса вопросов о том, где проводить поиск и по каким столбцам в Docs, в таблицах описания классов? как будут выглядеть процедуры, пригодные для выполнения для любого класса? и наконец надо ли все это?
Последний вопрос вовсе не праздный. Если увидеть во что превратилась всемирная паутина, то я бы не хотел смотреть во что превратится реализация изложенных понятий
и механизмов в мировом сообществе.
Ассоциация – это обусловленная предшествующим опытом связь представлений, благодаря которой, одно представление, вызывает по сходству, смежности или противоположности другое. Представляет собой реализацию межклассовых отношений на основе ассоциативной связи двух классов, которая активизирована по заданному шаблону. При этом меню операционных свойств ассоциируемого класса будет доступно в меню ассоциирующего. На сегодняшний день стандартное понимание отношений классов оперирует практически только правилами наследования классов. Т.е. дочерний класс наследует свойства родительского класса.Такая иерархия классов присутствует и в технологии Nexus. Но дополнительно к этому, предварительно описав схему отображения, можно преобразовывать объекты одного класса в объекты другого без иерархического подчинения классов, что представляет собой реализацию качественно новых классовых отношений – полиморфных или полиморфизма.
33
Окрашены в пурпур вершины гор
Златистым взором царственного утра,
Облиты золотом луга и дол,
Бледный поток, текущий к морю мудро.
В руках утра мрачнеют тучи гневно с ним, -
Альтернатива дивному сиянью.
Привыкнуть трудно к обладанью
Лишений и щедрот небес, которыми дарим.
Не так ли и меня, вдруг солнце озаряет,
Но мой, увы, счастливый с Вами только час.
Все остальное тьма в Вашей душе скрывает,
Но не ропщу за это я на Вас.
Моя любовь Вам благодарна и за утро,
Раз мудр гнев небес, земное тоже мудро.