




已阅读5页,还剩50页未读, 继续免费阅读
(计算机软件与理论专业论文)反射机制的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河海大学硕士论文 反射机制的研究和| 堇用 摘要 随著新环境的出现,要求软件必须具有自治计算的能力、具有自省性和自 适应性的能力、能够支持动态的重配置和网络在线维护和演化的能力。而反射 是指系统推理和作用于自身的一种能力,能支持系统的自省和调整,还能支持 系统在不同环境下的配置和重配置的能力。基于上述的这些原因,采用反射技 术是满足和实现在新的环境中软件发展具有上述新特征的一种可行性途径。 j o s 6 m e s e g e r 等人提出的推演系统和泛理论概念,为反射的统一描述奠定 基础。但其中缺乏系统相应动态性描述机制,故本文引入重写规则来描述系统 的动态变化过程,从而形式化了一个抽象的反射系统。这样不仅可以关联所有 反射系统,使反射概念得到精练和统一化,而且能够为各种反射的应用提供理 论基础,更容易地理解和建立各种具体反射系统。在此基础上,本文提出了一 种比较抽象的对象式反射系统c a e r m ( c o m p o s a b l em u l t i m e t a o b j e c ta d a p t a b l e a n de x t e n s i b l er e f l e c t i v em o d e l ) ,以一种动态的方式形象刻画了整个对象式反射 过程,并融入了相关的反射概念。这样解决了当前的对象式反射系统形式描述 中两个方面的不足:一是缺乏反射系统动态变化过程的详细描述,二是相关反 射概念如因果相连、重配置等描述在系统中的体现不够清晰。 最后,给出了c a e r m 在水情检测系统的应用,这说明了该模型的实际可行 性,有一定的实用价值。 关键词:反射;代数语义;对象式系统:q o s 保证 河海大学硕士论文 反射机制的研究和应用 a b s t r a c t w i t ht h e d e v e l o p m e n to ft h en e wc i r c u m s t a n c e s ,s o f t w a r em u s th a v et h ea b i l i t yo f a u t o n o m y , i n t r o s p e c t i o na n ds e l f - a w a r e ,a n dc a ns u p p o r td y n a m i c a lr e c o n f i g u r a t i o n a n dc a nm a i n t a i na n de v o l v eo n l i n e r e f l e c t i o ni st h ea b i l i t yo ft h es y s t e mt h a tc a n r e a s o na n di n s p e c to ni t s e l li tc a ns u p p o r tt h ei n t r o s p e c t i o na n dr e c t i f i c a t i o no ft h e s y s t e m ,a n ds u p p o r ts y s t e mc a nc o n f i g u r a t i o na n dr e c o n f i g u r a t i o ni t s e l fi nd i f f e r e n t e n v i r o n m e n t s b a s e do nt h e s e r e a s o n s ,u s i n g r e f l e c t i o n t e c h n o l o g y i saf e a s i b l e m e t h o dt os a t i s f ya n dr e a l i z et h ec h a r a c t e r i s t i ca n dr e q u i r e m e n to fs o f t w a r ei nn e w e n v i r o n m e n t j o s dm e s e g e ra n dh i sr e s e a c hg r o u pp r o p o s e de n t a i l m e n ts y s t e ma n du n i v e r s a l t h e o r yw h i c hp r o v i d eb a s i ci d e a sf o rag e n e r a lc o n c e p to fr e f l e c t i o n ,b u tt h e r el a c k so f d e s c r i p t i o no fd y n a m i c a lm e c h a n i s m t h e r e f o r e ,t h i sp a p e rb a s e so nr e w r i t er u l e st o s o l v et h i s p r o b l e m ,f o r m a l i z e saa b s t r a c tr e f l e c t i v es y s t e m :b e c a u s ei t c a nn o to n l y p r o v i d eu s w i t hg e n e r a lc r i t e r i aa n dc o n c e p t st h a tc a nu n i f ya l lr e f l e c t i o n c a s e s , c o n t r i b u t et o c o n c e p t u a ls h a r p e n i n ga n du n i f i c a t i o n ,b u t a l s oi tc a l la s s u r e t h e o r y f o u n d a t i o n ,s ot h a nw ec a ne a s yt ou n d e r s t a n de x i s tr e f l e c t i o nc a s e sa n db u i l dn e w o n e s ,t h e n ,t h i sp a p e rp r o p o s e s aa b s t r a c t o b j e c t r e f l e c t i v em o d e l - - - c a e r m ( c o m p o s a b l em u l t i m e t a o b j e c ta d a p t a b l ea n d e x t e n s i b l er e f l e c t i v em o d e l ) ,w h i c hc a n d e p i c t t h e d y n a m i c s o fo b j e c tr e f l e c t i v e s y s t e m a n de m b e di nr e l a t e dr e f l e c t i o n c o n c e p t s t h u si t s o l v e st w od i s a d v a n t a g e so fc n r r e n tf a m l i s m ed e s c r i p t i o n so fo b j e c t r e f l e c t i v es y s t e m :o n ei st h a ti tl a c k so fd e t a i ld e s c r i p t i o no fd y n a m i c so fs y s t e m ,t h e o t h e ri st h a ts o m er e f l e c t i v ec o n c e p t ss u c ha s c a u s a l c o n n e d e d ,r e c o n f i g u r a t i o na r e n o td e s c r i b e dc l e a r l yi nt h es y s t e m f i n a l l y ,t h i sm o d e li sa p p l i e dt ot h ew a t e rm o n i t o r i n gs y s t e mf o ra s s u r a n c eo f q o s a n a l y s i ss h o w st h eu s a b i l i t yo f t h i sm o d e l k e y w o r d s :r e f l e c t i o n ,a l g e b r a i cs e m a n t i c ,o b j e c ts y s t e m ,q o sa s s u r a n c e 2 河海大学硕士论文反射机制的研究和应用 1 1 研究背景 第一章前言 达尔文的进化论观点“优生劣汰,适者生存”是大自然普遍适用的法则。 随着环境的变化,万事万物都在发生改变,当它适应环境时,便会生存下去, 否则就会被淘汰。而计算机软件的不断改变也是不可避免的,这是软件的基本 特征,也是符合达尔文的进化论的观点。随着用户的需求愈来愈高,软件也耍 不断的发展使之持续的与之相适应。 在新环境下,软件的发展呈现出许多形式,软件必须具有自省和自适应的 能力、软件的开发要摒弃传统的“黑盒子”【1 j 方法,要采用“自盒子”即开发 实现的方法、软件能够不断演化。北京大学杨芙清院士将软件在i n t e r n e t 环境下 呈现出的新形式归纳为一一网构软件 3 1 0 这种软件具有自主性、协同性、反应 性、演化性、多态性等特点。这样,软件发展趋势向智能型转变,必须具有自 治计算的能力,具有自省性和自适应性的能力,能够支持动态的重配置和网络 在线维护和演化。 针对软件发展所需要的自省性、自适应性、开发实现性等特点,需要一种 有原则性的、系统的、可适用的方法对传统的软件进行改进,使得软件满足这 些新的特点和需求。而反射是指系统推理和作用于自身的一种能力【2 1 ,它能够 同时控制系统的静态表现特征以及系统的动态执行特征【3 】,它还是一个原则性很 强的方式来支持系统的自省和调整【”,还能支持系统在不同环境下的配置和重 配置的能力【5 ) 。基于上述的这些原因,采用反射技术是满足和实现在新的环境 下软件发展所具有的自省性、自适应性、开放实现等特征的一种可行性途径。 文献 4 1 1 6 1 1 7 1 给出了在当前软件中加入反射技术使系统适应新需求的很多实例。 1 2 研究现状 计算反射的理论研究和实践探索从研究应用的范围大致可分为三个阶段。 1 9 8 2 年n 8 0 年代中后期,b r i a nc s m i t h 博士最先系统阐述了计算反射的概念 p 1 ,并设计了基于l i s p 的3 l i s p 语言。此后一段时间的发展一直停留在对反射语 言的研究上,诸如c o m m o nl i s p ,f o r t h ,s c h e m e 等语言的发展。应该注意到,这 些语言都是解释型的语言。这一时期反射技术研究的特点是:跟人工智能尤其是 l i s p 语言紧密结合,尚未引入面向对象程序设计的概念。 8 0 年代中后期到9 0 年代中期,p a t t i em a e s 所做的工作是承前启后的 1 0 】。她在 河海大学硕士论文反射机制的研究和应用 8 7 年的文章中不仅完成了对前一阶段计算反射研究的总结,更重要的是提出了一 个基于o o l ( 面向对象语言) 的反射的体系结构,为计算反射在o o p ( 面向对象 编程) 领域的发展奠定了基础。在论文中她举例证实,当前许多棘手的、令人觉 得别扭的编程问题在她的反射体系结构下将被自然而优雅地解决。 有必要再次提到c l o s ,它是c o m m o nl i s p 的面向对象扩充,也是当前 c o m m o n l i s p 标准的一部分。c o l s 是m o p 与o o p 结合的典范,是一个理论的反 射o o p l 。这一时期,o o p 的发展把计算反射带入了一个新的领域,反射结合面 向对象,正是反射概念的自然回归。开始向着人的思维模式靠拢,这也是反射技 术发展的必然结果。 9 0 年代中期至今,计算反射开始在许多技术领域得到研究和应用。这些领域 包括对象中间件技术领域 4 】【6 嗣、自适应工作流技术领域、程序语言设计领域、 a o p ( a s p e c to b j e c tp r o g r a m ) 领域等,其中以中间件领域尤为特出,以 o p e n o r b i ” 、d y m a t i c t a o 2 0 n l o p e n c o r b a 2 1 为特出代表,而在移动环境中的典 型中间件代表为c a r i s m a 2 司和r e m m o c z 3 l ,国内也有学者作出了一些研究以电 子科技大学的r e c o m 2 4 】和北京大学的p k u a s 2 5 为例,在第二章将对之进行详细 介绍。 当前主要有这样一些组织在做反射理论方面的研究s k ii n t e r n a t i o n a l ( 斯坦 福国际研究所) j o s 6m e s e g e r 等人提出了推演系统和泛理论的概念,为统一描 述反射奠定理论基础【3 2 1 ,并基于“r u s s i o nd o l l s ”模型提出了一种r u s s i o nd o l l s w i t hl c icr e f l e c t i o n 的分布式对象模型【3 4 。在欧洲,瑞士的d a v i db a s i n 等则基于 推演系统提出了一种反射元逻辑框架的描述框架,从理论和实际两个方面对元逻 辑框架的描述作出了贡献【3 5 】。c m f f o m i a 大学的一个研究小组提出了一种两层的 基于a c t o r 模型的反射语义模型t l a m ( t w o l e v e la c t o rm a c h i n e ) ,该模型通过 元层在运行时能够获取和修改基层的运行标注来达到元层对基层的控制【3 1 】。 国际上比较多的计算反射研究成果在e c o o p 、o o p s l a 、p o p l 等重要的面 向对象技术会议上被提交。1 9 9 6 年,a c m 牵头组织了第一届以计算反射为主题 的国际会议r e f l e c t i o n 9 6 ,已经举行了三届【2 】。这一时期反射研究开始走上系统化、 规模化的道路,并且在许多方面已经得到应用。 1 3 存在问题与解决思路 综合上面各种反射的研究现状。当前对反射系统的描述,都是从各自的角 度进行,即把反射是作为系统的一种特性进行描述。而实际上无论是在哪种系 统中,反射就其本质而言,它不依赖于特定的系统的,可以用一种统一的方式 描述。j o s 6m e s e g e r 等人提出了推演系统和泛理论为反射的统一描述奠定了基 2 河海大学硕士论文反射机制的研究和应用 础,但是由于缺乏对系统的动态变化过程进行描述,很难应用到一般的反射系 统中。本文基于重写逻辑,加入描述系统动态变化的重写规则,可毗进一步描 述一个抽象的反射系统。 而纵观反射在面向对象中的应用,都是从实际的系统入手为主,缺乏对对象 式反射系统的抽象化和形式化。而其中几种对象式系统的反射模型如t l a m 、 r u s s i o nd o l l sw i t hl o g i cr e f l e c t i o n 等对相关反射过程的动态性描述不够,并且对反 射概念如因果相连、重配置等描述在模型中的体现不够清晰。而本文基于重写逻 辑语言m a u d e 和对象式反射的基本思想,提出了一种比较抽象的对象式反射模型 c a e r m ,并且基于该模型,形式化了对象式反射系统中的反射过程,并融入了 相关的反射概念的介绍。 1 4 本文的主要工作 针对上述的研究背景和存在的问题及相应的解决思路,论文主要做了如下 方面的工作: 1 、系统地总结分析和研究了反射概念的由来、反射机制的原理。着重总 结了反射在编程语言和中间件系统中的应用; 2 、基于代数语义,以推演系统和泛理论为前提,再引入重写逻辑,统一 描述了一个抽象的反射系统; 3 、以对象式反射系统为例,提出了一种抽象的对象式反射模型c a e r m 。 该模型详细描述了对象式反射系统的动态特性,并在水情检测系统中作出了应 用。最后将自己的工作和当前的三个典型的反射语义模型t l a m 、t h eo n i o n s k i nm o d e l 和r u s s i a nd o l lw i t hl o g i cr e f l e c t i o n 做出了比较。 1 5 本文的结构 本文的余下章节的主要内容为: 第二章主要概述了反射机制的概念、反射的特点、当前对反射的应用。 第三章详细介绍代数语义和范畴论的相关概念,由于代数语义考虑问题关 注的是一簇模型( 系统) ,故能用来对反射进行独立于模型( 系统) 的统一描 述,本文基于代数语义形式化了反射系统。 第四章介绍了对象式反射系统的基本原理,并说明了一种能够支持对象式 建模的语言m a u d e 。然后提出了一种抽象的对象式反射模型c a e r m ,描述了 它在水情检测系统中如何保证q o s 的应用。并将它相关工作做了比较。 第五章总结了自己的工作,并对将要做的工作做出了展望。 河海大学硕士论文反射机制的研究和应用 第二章反射概念及其应用 2 1 基本概念 2 1 1 反射定义 从词源上追究,反射本指一种物理现象。但是由于人们经常利用光的反射 特性从镜子中观察自己的外部特征,并进行修饰,久而久之,反射就具有了反 思、反省的意思,反射成为作为智能个体的人的种思维过程。正是受到人的 这种反射思维的启发,人们为计算系统的类似行为定义了类似的术语:计算反 射( 反射) 。 反射首先在人工智能中得到应用,f e f e r m a n 柏】定义了一套基于反射原则的 公理系统以描述智能行为的反射性。后来由s m i t h t g j 在1 9 8 2 年在计算机编程领 域首次提出的,他在原文中指出:“i na sm u c ha sac o m p u t a t i o n a lp r o c e s sc a nb e c o n s t r u c t e dt or e a s o na b o u ta ne x t e r n a lw o r l di nv i r t u eo fc o m p r i s i n ga ni n g r e d i e n t p r o c e s s ( i n t e r p r e t e r ) f o r m a l l ym a n i p u l a t i n gr e p r e s e n t a t i o n s o ft h e w o r l d ,s ot o oa c o m p u t a t i o n a lp r o c e s sc o u l db em a d et or e a s o na b o u ti t s e l fi nv i r t u eo fc o m p r i s i n g a ni n g r e d i e n tp r o c e s s ( i n t e r p r e t e r ) f o r m a l l ym a n i p u l a t i n gr e p r e s e n t a t i o n so fi t so w n o p e r a t i o n sa n d s t r u c t u r e s ” 这段话的意思是指编程语言能够访问、检测和修改它本身状态或行为的一种 能力,他并开发了具有反射能力的2 l i s p 和3 - l i s p 语言。 2 1 2 反射系统和因果相连一 1 9 8 7 年,p a t t i em a e s ” 在文献中很好地总结了计算系统中的和反射相关的 概念: 计算系统对现实世界中的一些部分进行推理并执行相应的动作,它的处理 对象称作系统的处理域。 因果相联( c a u s a l l y c o n n e c t e d ) :计算系统和它的处理域是因果相联的,这 也就是说:计算系统和它的处理域无论二者中的哪一个发生变化,都会导致另 外一个相应的变化。 元系统也是一个计算系统,不过它的处理域是另一个计算系统,该计算系 统被称为对象系统。元系统将它的对象系统表示为它的处理数据。元系统的程 序规定了关于它的对象系统的元计算,因此被称为元程序。反射是对自身进行 推理和操作的过程。反射系统是和以它自己为对象系统原因连接的元系统。 综合上述观点可知,一个反射系统具有两个组成部分,如图2 1 所示: 一部分对系统的问题域建模并对其进行推理和操纵,以解决问题;另一部分 d 河海大学硕士论文 反射机制的研究和应用 对系统自身建模并对其进行推理和操纵,使系统适应某些变化。而且,两个 部分采用同样的实现机理。从实现角度看,前一部分组成基层实体,后一部 分组成元层实体,基层实体与元层实体之间具有因果相联( c a u s a l c o n n e c t i o n ) ,即基层实体状态或行为的任何变化均立即导致相应元层实体 的变化,反之亦然。 图2 1 反射系统和两层的反射结构图 这样,便得出了反射的抽象定义,反射是计算系统推理和操纵自身的一种 能力,而且这种推理和操纵的方式和其推理和操纵其问题域的方式是类似的。 上图是一种两层的反射体系结构,然而,在系统的某些情况下,两层的反 射体系结构不足以表征整个系统的反射特征。在基层和元层的基础上,定义元 层的元层即元元层,这样就形成了一种多层的反射系统结构,简称反射塔 ( r e f l e c t i v et o w e r ) 。文献【3 6 瞄】是从理论和应用中使用反射塔的两个具体实例, 文献【3 6 中的“o n i o ns k i nm o d e l ”是一个具有多层反射体系结构的语义模型,而 文献瞄】是一个具体反射塔体系结构的反射中间件,在反射应用方面也有相关的 论述。 2 1 3m o p ( m e t a o b j e e t p r o t o c 0 1 ) 和具体化( r e i f i e a t i o n ) 元对象协议( m o p ) 是反射系统中给用户不仅有使用该语言编程的能力, 而且有增量修改语言的行为和执行的能力。它能够提供机制用来把系统的信息 表示为数据,建立基层和元层对象之间的联系,当基层对象被调应时,能够激 活相关的元层对象,首先表示在是元层能够操纵基层的信息,基层的计算行为 能够转变成元层能够操作的数据,这个过程叫具体化( r e i f i c a t i o n ) 。具体化了的 实体构建了可能进行反射计算的元信息。 有两种机制用来定义基层和元层是如何关联的和系统如何被激活反射机 制。根据文献【3 】这两种机制为: 1 ) 由基层对象显式激活反射过程; 2 ) 由系统隐式调用。 在第二种情况中,由于系统知道与基层相关联的元对象,故由它来激活。 比如说,当一个变量需要改变它的状态( 被反射的变量) 或者是一个应用程序 河海大学硕士论文反射机制的研究和应用 对象收到一个要求改变其方法( 被反射的方法) 的消息时,反射对象将被系统 激活。 消息截取机制是通用的用来在基层和元层之间来激活元对象的方法。在消 息截取模型中,每个消息在发送到对象时,首先会被发送到该对象的元对象。 消息在发送和接受时能够被目标对象所截取。其外,元对象必须能够提供最基 本的机制来获取消息的目标对象的信息,激活的方法及其参数。这些具体化的 信息允许一个元对象通过相关的信息能够返回在基层的控制。 2 2 反射特点 采用了反射技术的系统叫反射系统。反射系统具有一些新的特点如透明性、 关注分离( s e p a r a t i o no f c o n c e m s ) 、可见性、反射粒度等。下面分布详细说明之: 1 透明性:是指反射系统在逻辑上可以看作是一种多层的体系结构( 反射塔) , 每一层中的实体相对其上层的实体而言是独立的。可以透明地对低层进行 检查和调整。当将元层和基层集成时,对基层代码的改动程度,可以衡量 这个反射系统的透明度 1 1 】。 2 关注分离:反射塔的不同层关注系统的不同方面,即基层执行系统的功能, 其他层扩展系统的不同非功能性方面,比如:容错、并发、持久性等。这 样,利用反射就可以容易地扩展一个计算系统。将系统的不同方面( 功能 性属性和非功能性属性) 委派给不同的分层,就称为关注分离f 1 2 】。 3 可见性:指反射的范围,即哪些基层实体或基层实体的哪些方面涉及到被 元层进行。 4 反射粒度:是指一个反射系统中,被不同元实体具体化的基层实体最小的 方面。通常的粒度层次是:类、对象、方法、方法调用等。如果反射粒度 是在方法这个层次,则同一对象的两个方法可以被两个不同的元实体具体 化,从而表现出两种不同的元行为。小的反射粒度使系统具有更好的灵活 性和模块性,但元实体的数量也会激增。 另外,使用反射技术也会带来一些负面的影响。 1 反射可能会导致额外的系统开销。特别是需要额外的代码去确定系统行为 的精确解释( 因为这些行为会发生变化) ,因此需要更好地协调灵活性和性 能之间的矛盾。 2 在允许程序员访问下层系统实现的同时,必须保证系统的完整性和一致性, 这需要从理论上对反射系统的正确性和一致性作完整的证明。 3 ,使用反射可能会影响系统的安全性,要使元程序对系统的反射在适当的控 制之下,从而防止元程序对系统不经意的破坏和恶意的访问 1 3 】。 6 河海大学硕士论文反射机制的研究和应用 2 3 反射分类 有关反射的分类目前还没有标准的定义。但已经有不同的人对之从不同的 方面进行了分类,其中主要集中在反射在编程语言中的应用。本文主要介绍根 据反射方面的不同、反射进行控制的关联时机和反射实现策略帮粒度的不同对 反射进行了不同的分类。 2 3 1 根据反射方面的不同 在文献 1 4 】中,根据程序设计语言的哪些方面可以被元层进行检查和调整, 可分为结构反射( s t r u c t u r a lr e f l e c t i o n ) 和行为反射( b e h a v i o r a lr e f l e c t i o n ) 两类。 结构反射 指系统或语言提供的对当前执行程序的方法和状态( m e t h o d sa n ds t a t e s ) 进行 完全的具体化( r e i f i c a t i o n ) 的能力【1 4 1 。 结构反射允许检查和调整计算系统的代码。最初的函数式程序设计语言( 如 l i s p ) 和逻辑程序设计语言f 如p r o l o g ) 都有一些声明语句去改动程序的表达,这主 要基于这些语言的解释特性,解释型语言较容易引入结构反射。但大部分面向 对象的语言( 如c + + ) 是编译型的,在运行时没有代码的表示。只有纯面向对 象语言( 如s m a l l t a l k ,j a v a ) ,它们在运行时有代码的表示( 即c l a s s ) ,正是这 些表示可用于实现结构反射。结构反射在非纯面向对象语言中是通过以下方式 实现的:在编译时或在运行时引入代表具体化程序代码的数据结构。 行为反射 指系统或语言提供的有关程序设计语言的运行环境的语义完全具体化的能 力。行为反射允许检查和调整一个系统运行时的行为,如非功能性属性、资源 管理等。 这些概念中还涉及另一个重要的基本概念具体化( r e i f i c a t i o n ) 。具体化 ( r e i f i c a t i o n ) 是指将系统的内部表示转换为可在运行时进行操作的程序实体的 动作。( t h ea c t i o no fe x p o s i n gt h ei n t e r n a lr e p r e s e n t a t i o no fas y s t e mi nt e r m so f p r o g r a m m i n g e n t i t i e st h a tc a nb e m a n i p u l a t e d a tr u n t i m e ) 2 3 2 根据反射进行控制的关联时机 根据元层和基层之间原因连接建立的时间,可以将反射分为编译时反射 ( c o m p i l e - t i m er e f l e c t i o n ) 、装载时反射( l d a d t i m er e f l e c t i o n ) 以及运行时反 射( r u n t i m er e f l e c t i o n ) 吲。 编译时反射 在程序编译时,元层程序通过修改编译过程来控制某些语句或表达式的编 译。如图2 2 所示: 河海丈掌硕士论文 反射机制的研究和应用 图2 - 2 编译时反射图解 装载时反射 在执行程序之前,当装载和连接应用程序时进行的反射被称为装载时反射 如图2 3 所示: 图2 - 3 装载时反射图解 运行时反射 指基层程序的执行可以被元层程序的规约所修改,如图2 4 所示:。 豳24 运行时反射图解 2 3 2 根据反射实现策略和粒度 根据反射实现策略和粒度的不同,可以将反射分为类反射( c l a s s r e f l e c t i o n 、 方法反射( m e t h o dr e f l e c t i o n ) f f 对象反射( o b j e c tr e f l e c t i o n ) t 瓢。需要指出的是,这 种分类主要用于面向对象的编程语言中的反射。 类反射 在类反射中,一个被反射类( r e f l e c t e dc l a s s ) 的所有对象都具有相同的反射 河海大学硕士论文 反射机制的研究和应用 行为。每当一个这样的基对象获得一个消息时,反射机制都将消息的处理重定向 到同一个元对象,如图2 5 所示: 图2 5 类反射图解 基层和元层关 实倒 反射机制 方法反射 该类反射是针对方法进行的( 或者是在方法粒度上进行的) 。对于一个被反 射的方法( r e f l e c t e dm e t h o d ) ,每当一个对象接收到一个对该反射方法的调用时, 反射机制将线程的控制重定向到相应的元对象。同一个对象的不同方法可以被不 同的元对象反射。对于没有被反射的方法,则反射机制不起作用,如图2 6 p ) t - 示:。 r e f l e e t e dc i a s s 基层和元屡关联 实例 图2 - 6 方法反射图解一反射机制 对象反射 该类反射是针对对象进行的,相应的对象被称为被反射对象( r e t l e c t e d o b j e c t ) 。每当一个被反射对象接收到一个消息,反射机制将程序的控制重定向到 元层的元对象。对于和被反射对象具有相同类的其他非被反射对象,反射机制不 起作用,如图2 7 所示: 河海大学硕士论文 反射机制的研究和应用 b a s ec l a s s m e t a - o b j h tc l a s s 关联 射粒 从s m i t h 开始,反射在计算机科学中得到了广泛的应用,其中包括编程语 言、操作系统、软件如中间件系统;还在计算机科学中的逻辑与理论中得到广 泛的应用,如重写逻辑、霍恩逻辑等等。本文主要针对编程语言和中间件系统, 对反射的应用做出详细的探讨。 2 4 1 编程语言 本节主要讨论了反射在编程语言中的应用。介绍了三个典型的应用,从开 始的l i s p 语言到第一个应用到对象式语言的3 一k r s ,最后到新型编程语言 j a v a 。 2 4 1 1l i s p s m i t h 在1 9 8 2 年首先在设计了第一个反射编程语言2 - l i s p 和3 - l i s p 9 “1 。 他认为语言中反射塔的一个基本概念是存在一组解释器,能够对各层相互之间 的行为进行解释,各层之间的连接主要有两个操作:具体化( r e i f i c a t i o n ) 和反 射( r e f l e c t i o n ) 如图2 8 所示。 如图2 - 9 所示,在3 - - l i s p 中,程序可以访问它的解释器的数据结构,由此来 实现反射连接。s m i t h 在引人反射塔的概念的时候,是将它作为语言实现扩展 性的一种结构。它将这种结构建模为无限层的解释器构成的塔,每个解释器 同时也是由其上层的解释器所解释的个程序,用户的程序运行在塔的最低层。 1 0 河海大学硕士论文 反射机制的研究和应用 2 l 。一一一一一1 i 1 i 一一一i 一一一1 - i - - - - - - - - - j i 一一一一一j j 一j 【 v r e i f l c a t i o “ r e f l e c t i o n 留2 - 8 反射和具体化操作 砌干l e 垤i3 砌母l e v e l2 r p p l e v e ll u s e r 弘蛩脚 图2 - 9 l i s p 语言反射塔 也可以这样说,位于第0 层的用户程序由一个解释器运行,而这个解释器是一 个位于第1 层的程序,这个在第1 层的程序依次是由位于第2 层的程序解释的, 等等。这样就形成了解释器构成的塔。如果我们把一个程序考虑为位于第n 层 的一个函数,它事实上也是一个由第n + l 层解释的数据结构。这里的关键一点 在于,在这个反射结构中所给定的一个函数,不仅表现为一个函数,而且是一 个可以被检查和操作从而改变其行为的数据结构。这些特性导致了一种容易扩 展的语言,因为语言实现所用的结构可以被编程人员访间。这个概念模型的无 限递归,在3 一l i s p 的实现中是这样处理的:即仅在需要的时候才创建相应解释 器。 2 4 12 3 - k r s 受到l i s p 的影响,p m a e s 1 0 在分析现有反射编程语言的基础上,开发出了 第一个反射面向对象的语言3 - k r s ,从而系统化的将发射引入面向对象的编程 语言。如图2 1 0 所示,3 k r s 反射体系结构有如下特点: 在对象层和反射层之间有清晰的分离 河海大学硕士论文 反射机制的研究和应用 向对象系统的自表示是统一的,也就是说,每个实体都是对象,对象的每 个方面都能够被反射,元对象也是对象,当需要元对象时以懒散( 1 a z y ) 的 方式创建。 自表示是完全的,元对象包括了系统中可利用对象的所以信息。 自表示是一致的自表示在运行时是可以修改的,会对运行时的计算产生影 响。 图2 1 0 一个对象和与之相关的反射属性实例 2 4 1 3j a v a 在新型的编程语言中,j a v a ”】在j d k l 1 中增加了反射。类j a v a t a n g c l a s s 和包j a v a 1 a n g r e f l e c t 实现了j a v a 的反射。方法j a v a f a n g c l a s s 用来获取一个类 的信息。j a v a 1 a n g r e f l e c t 中的类的方法提供类的更多信息,允许方法被激活。 j a v a 核心反射a p ! 提供了支持当前j a v a 虚拟机中类和对象的自省。它的 作用如下: 构造新类的实例和数组; 访问、修改对象和类的字段: 激活对象和类的方法; 访问和修改数组元素。 j a v a 核心反射a p i 定义如下类和方法【1 2 1 : 三个类f i e l d ,m e t h o d ,和c o n s t r u c t o r 提供: 1 底层成员和c o n s t r u c t o r 的反射信息; 2 一种类型安全的方式( t y p e s a f e ) ,使用成员和c o n s t r u c t o r 操作j a v a 对象。 而类c l a s s 的方法提供f i e l d ,m e t h o d 和c o n s t r u c t o r 类的实例的构建; a r r a y 类提供动态构建和访问j a v a 数组的的方法。 利用类m o d i f e r 帮助对j a v a 语言的标识符关于类和成员信息进行解码。 类i n v o c a t i o n t a r g e t e x c e p t i o n 用来处理反射的方法或c o n s t r u c t o r 产生的异 1 2 妇 “ :璺! h = 0 ) 可表示为 0 ,:_ 。j 2 。& 斗+ l 。这里( s 1 ,s 2 ,s k ) 是o i 的秩,与o j 的结果类子8 n 1 合称 全秩。s 和o 的组合= ( s ,d ) 称为一个基调。 定义3 2 ( 基调代数) :给定基调= ( s ,0 ) ,其中s = s i i i ) ,0 = 0 j l j 。 假设有一组集合a = 4li i 和一组函数f = 眠| ,) ,使得诸类子s i 和诸 集合a i 之间有一一对应关系,诸运算o i 和诸函数f j 之间也有一一对应关系,f i 称为0 j 的解释,并且,如果o j 的形式如定义2 1 所示,则函数是k 目的,它 的变元a 1 ,a k 分别属于集合a l a k ,函数值属于集合a k + 1 则称对偶 是一个代数。 定义3 3( 基项) :给定基调= ( s ,0 ) ,对于s 的基项的集合t :可归纳定义 为:1 ) 运算0 中关于类子s 的所有常量都是类子s 的基项。2 ) 对o 中的任运 算:0 ,: 。j 2 s 。斗j ,如果,分别是墨,j 。的基项,则o j 国,。, 是s 中的基项,其中s 1 ,s n , s s 。 定义3 4 ( 基调之间的射) :令= 和z ”= 是两个基调。从到的 射口定义为对偶( f ,g ) ,其中f 是s 到s ”的映射,g 是一组从0 到o ”的映射: 野。= o 。 - - 0 ”f ( u ) f ( s ) ,其中u 和f 4 ( u ) 分别是0 和0 ”中相应运算o 和o ”的秩,s 和f ( s ) 是该 运算的结果类子。f ( u ) 是f ( s ) 的自然扩充,有: p ( u ) - f ( s o f ( s 2 ) f ( s n ) ,u = s l x s 2 s n 。 定义3 5 ( 基调范畴s i g n ) - 以全体基调作为对象,以上述的基调之间的射作为 对象间的射,则全体基调和其射构成一个范畴s i g n 。 定义3 6 ( s e n 映射) :它把每个基调映射为所有等式的集合。s e n :s i g - - s e t 把 每个基调射a :6 = :一i 映射为函数,s e n ( 口) :等式集寸等式集。 为了更具一般性,有时把映射s e n 看成是函子s e n ,映射s e n :s i g - - s e t ,可表示为 s e n ( s i g ) = s e t 。 河海大学硕士论文反射机制的研究和应用 定义3 7( 句子) :给定的基调( e s i g ) ,若句子母是有效的,指句子中是 由公理集合r 运用逻辑规则推导而产生的,记为f 中。在上文中定义x 给出 了映射s e n ,它把每个基调映射为所有等式的集合。可以有s e l l ( ) = s ls 是基于基调的句子 ,z e s i g ,公理集合r s e n ( ) ,中r 。 定义3 8( 理论) :一个对偶 ( 基调加上公理组) 称为一个理论表示。如 果公理组是等式组e ,以e + 表示由e 能推出的全体等式,e + 称为封闭等式组。因 此,如果e 是封闭的,则 称为一个理论。 定义3 9 ( 模型) :d = 是一个理论,其中是一个基调,e 是一组等式, 若a 是基调的一个代数,并且把e 中每一个等式中的运算解释a 中的函数时,a 中的元素皆满足e ,则a 是d = 的一个模型。 定义3 1 0 ( 忘却函子) :理论为对象,理论间的射为射,存在一个范畴t h 和一 个忘却函子u :t h s 远把范畴t h 映x s i g ,把每个理论变为相应的基调,把理 论射变为基调射。 定义3 1 1 ( 理论的句子s e n ) :这样我们可以拓展函子句子的概念, s e n :弛峥s e t 。这这种条件下,定义s e n ( r ) = s e n ( 卢( ? ) ) 。也认为由基调形成 的句子,就是由其理论形成的句子。 3 2 范畴论简介 范畴是群、环、域等抽象数学结构的进一步抽象,其研究重点在于对象之 间的关系而不是对象的内部结构,软件工程形式化方法在范畴论中可得到更清 晰的解释,所以范畴论是计算机科学中的强有力的数学工具,广泛应用在软件 工程的各个领域阳l 。下面介绍范畴论的相关概念: 定义3 1 2 ( 范畴) :一个范畴包括,一个对象( o b j e c t ) 的集合和一个射( m o r p h i s m ) 的集合,对每一个射,对应于两个对象,分别叫射的论域( d o m a i n ) 和余论域 ( c o d o m a i n ) ;如果,是一个从对象a 到b 的射,那么写成,:4 _ b ,对每一个 对象a 一个恒等射是指它的论域和余论域都是a ,记着”。”,对于两个射 ,:一+ 口和茸:b _ c ( 即c o d ( f ) = d o r a ( g ) ) ,能形成一个复合射,g 。,:a c 。 还满足性质: 恒等复合:对每个射:a b ,有厂。哦= 厂和i d o 。f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届安徽省阜阳市颍州区第三中学化学高三上期末教学质量检测试题含解析
- 2025年文化遗产保护与传承策略考试试题及解析
- 2025年文化创意产业数字营销策略规划研究与IP运营经验借鉴案例分析及答案
- 2025年文化创意产业管理综合素质测评试题及答案
- 2025年文化创意产业对经济增长的贡献及政策倡导试题及答案
- 2025年文化创意产业策划师工作能力测评试卷及答案解析
- 2025年文化产业发展规划师技术认证试题及答案解析
- 2025年网站运营经理素质考核试题及答案
- 2025年生物农药及微生物农药项目合作计划书
- 2025年网页设计师技能考核试题及答案
- 输配电绝缘子维护与更换
- 幼儿园教师读《让儿童的学习看得见》有感
- 基本公共卫生服务项目工作存在问题整改情况范文(通用6篇)
- 销售人员要具备的基本素质
- 运维项目进度计划
- 图表作文写作技巧与范文解析
- 设备监理表格使用说明
- 文化创意公司章程范本
- 代谢性脑病的护理诊断与措施
- 五年级阅读理解(通用15篇)
- 2023-2024学年部编版七年级上册生物第三单元教案生物圈中的绿色植物生物学与文学 寄予植物的情怀
评论
0/150
提交评论