




已阅读5页,还剩69页未读, 继续免费阅读
(计算机应用技术专业论文)gasor系统面向对象的跨语言互访技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 论文题目: 专业: 硕士生: 指导教师: g a s o r 系统面向对象的跨语言互访技术研究 计算机应用技术 全斐( 签名) 王家华( 签名) 摘要 目前,在应用型系统中,采用不同语言编写系统中的模块成为自然的趋势。在对象 层次上使不同语言实现的模块进行互访,采用合理的基于对象的跨语言互访技术成为应 用系统中的重点和难点问题。基于对象的跨语言互访是一种代码与使用其他编程语言编 写的另一种代码进行交互的能力。对象要定义良好的接口来确保自身的一致性,如何在 交流的过程中使这种一致性得到保证而不失损失是问题的关键。它可以有助于最大程度 地提高代码的重复使用率,从而提高开发过程的效率。 首先,从面向对象角度出发,本文针对当前存在的各种跨语言互访技术进行了研究, 并总结了目前存在的跨语言互访技术的三种形式。它对当前存在的通过c 风格的函数互 访,通过c o m 接口互访和通过n e t 平台互访这三种形式作了分析研究,列出了这三种形 式的跨语言互访技术的特点以及优缺点。 其次,本文从g a s o r 储层对象模型面临的实际问题出发,结合g a s o r 储层对象模 型自身的特点,对g a s o r 储层对象模型的跨语言互访做了可行性分析,并研究了适合其 自身实际情况的技术理论。g a s o r 储层对象模型的跨语言互访涉及到两方,一方是n a t i v e 代码基础上c + + 对象模型,另一方是n e tm a n a g e d 代码基础上的c 撑对象模型。o a s o r 的 储层对象模型是个c + + 对象模型,c 撑的代码中只能访问n e t 对象模型。因此,g a s o r 需 要通过一个间接层,在两种对象模型之间架起桥梁,使得两种对象模型能够在语言间进 行互访。 最后,本文以一个用c 群实现的实际的对象模型为例,对该模型和g a s o r 储层对象模 型之间的关系进行了详细设计分析。它结合跨语言理论技术,实现了该对象模型在 g a s o r 中的集成,并通过数据验证了这种集成的合理性。 关键词:面向对象储层对象模型c + + 对象模型n e t 对象模型跨语言g a s o r 论文类型:应用研究 i l 英文摘要 s u b j e c t : as t u d yo fa c c e s s i n gc r o s s - l a n g u a g eo fg a s o rw i t ho b j e c t o r i e n t e d t e c h n o l o g y s p e c i a l i t y : n a m e : i n s t r u c t o r : c o m p u t e ra p p l i c a t i o nt e c h n o l o g y q u a n w a n g a b s i r a c l a tp r e s e n t ,i m p l e m e n t i n gm o d e l sw i t hd i f f e r e n tl a n g u a g ei sb e c o m i n gn a t u r a ld i r e c t i o ni n a p p l i c a t i o ns y s t e m i no b j e c tl a y e r ,h o wt oa c c e s sc r o s sl a n g u a g ea m o n gm o d e l s 诵t h o b j e c t o r i e n t e da n dh o wt oa d o p tr e a s o n a b l em e t h o da r et h ec r u c i a la n dd i f f i c u l ti s s u ei n a p p l i c a t i o ns y s t e m a c c e s s i n gc r o s sl a n g u a g ew h i c hb a s e do no b j e c ti sa m u t u a lc a p a b i l i t yt h a t c a r lc o m m u n i c a t ew i t ht h em o d e l so fd i f f e r e n tl a n g u a g e t h eo b j e c ts h o u l db ed e f i n e dw i t h f a v o r a b l ei n t e r f a c ew h i c hc a ni n s u r et h ec o n s i m e n c yo fi t s e l f t h ek e yi s s u ei sh o wt om a i n t a i n t h ec o n s i s t e n c yi nc o m m u n i c a t i o n i tc a nc o n d u c et oe r l h a n c et h er a t eo fr e u t i l i z a t i o na n d i m p r o v ee f f i c i e n c yo fd e v e l o p m e n t f i r s t l y , a c c o r d i n gt o t h em e t h o d o l o g yo fo b j e c t - o r i e n t e d ,d i v e r s i f i e da c c e s s i n gc r o s s l a n g u a g et e c h n o l o g i e sw h i c he x i s ta r es t u d i e d a n dt h r e ef o r m so fa c c e s s i n gc r o s sl a n g u a g e t e c h n o l o g yw h i c he x i s tc u r r e n t l ya r es u m m e du p t h er e s e a r c ho ft h em u t u a lc o m m u n i c a t i o n b yt h es t y l eo fcf u n c t i o n ,t h ec o m i n t e r f a c ea n dt h ep l a t f o r mo f n e ta r ea n a l y z e d t h e nt h e a d v a n t a g ea n dd i s a d v a n t a g eo ft h o s et h r e ef o r m so fa c c e s s i n gc r o s sl a n g u a g et e c h n o l o g yi s d i s c u s s e d s e c o n d l y ,c o n s i d e r r i n gt h ea c t u a lp r o b l e mo ft h er e s e r v i o ro b j e c tm o d e lo fg a s o ra n d t h ec h a r a c t e r i s t i co fi t s e l f , t h ef e a s i b i l i t yo ft h ea c c e s s i n gc r o s sl a n g u a g et e c h n o l o g yi s a n a l y z e da n dt h et e c h n i c a lt h e o r yc o n n e c t 、析t ht h et h er e s e r v i o ro b j e c tm o d e lo fg a s o r i s s t u d i e d a c c e s s i n gc r o s sl a n g u a g et e c h n o l o g yi n t h er e s e r v i o ro b j e c tm o d e lo fg a s o r i n c l u d e st w oa s p e c t s o n ei st h ec + + o b j e c tm o d e lb a s e do nt h en a t i v ec o d e ,t h eo t h e ri st h ec 群 o b j e c tm o d e lb a s e do nt h e n e tm a n a g e dc o d e t h er e s e r v i o ro b j e c tm o d e lo fg a s o r i st h e c + + o b j e c tm o d e l ,a n dt h ec 撑c o d ec a no n l yc o m m u n i c a t e 、) i ,i lt h e n e tm a n a g e dc o d e t h u s , i n d i r e c tl a y e ri sn e e d e dt oe s t a b l i s hab r i d g eb e t w e e nt h ec + + o b j e c tm o d e la n dt h ec 拌o b j e c t m o d e ls ot h a tt w om o d e l sc a nc o m m u n i c a t eb e t w e e nl a n g u a g e s f i n a l l y ,t a k i n gaa c t u a lc 拌o b j e c tm o d e lf o re x a m p l e ,t h i sd i s s e r t a t i o nm a k eap a r t i c u l a r a n a l y s eo ft h er e l a t i o n s h i pb e t w e e nt h i sc 撑o b j e c tm o d e la n dt h er e s e r v i o ro b j e c tm o d e lo f g a s o r c o m b i n i n gw i 廿1t h et e c h n i c a lt h e o r yo ft h ea c c e s s i n gc r o s sl a n g u a g e ,t h ep u r p o s eo f i n t e g r a t i n gt h i sc 群o b j e c tm o d e li n t og a s o r i si m p l e m e n t e d a n dt h el o c a ld a t av a l i d a t e st h e i i i 英文摘要 r a t i o n a l i t yo ft h ei n t e g r a t i o n k e y w o r d s :o b j e c t - o r i e n t e d ,r e s e r v eo b j e c tm o d e l ,c + + o b j e c tm o d e l ,n e to b j e c tm o d e l , c r o s s l a n g u a g e ,g a s o r t h e s i s :a p p l i c a t i o ns t u d y i v 学位论文创新性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成 果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他 人已经发表或撰写过的研究成果;也不包含为获得西安石油大学或其它教育机构的学位 或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做 了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 论文作者签名:丛日期:m 蹭历功 学位论文使用授权的说明 本人完全了解西安石油大学有关保留和使用学位论文的规定,即:研究生在校攻读 学位期间论文工作的知识产权单位属西安石油大学。学校享有以任何方法发表、复制、 公开阅览、借阅以及申请专利等权利,同时授权中国科学技术信息研究所将本论文收录 到中国学位论文全文数据库并通过网络向社会公众提供信息服务。本人离校后发表 或使用学位论文或与该论文直接相关的学术论文或成果时,署名单位仍然为西安石油大 学。 论文作者签名: 导师签名: 日期:搠窖多加 注:如本论文涉密,请在使用授权的说明中指出( 含解密年限等) 。 第一一章绪论 1 1 课题的目的及意义 第一章绪论 g a s o r ( g e o s t a t i s t i c a la n a l y s i ss y s t e mo fr e s e r v o i r ) 是一个用于油藏建模的地质 统计分析系统,主要面向石油地质学家和油藏工程师。g a s o r 储层对象模型主要用于 油气田分布预测,开采方案的可行性分析作出相应的科学性预测。同时,它为油气田的 开采过程提供技术支持,已经成为一个国产的、油气储层随机建模方面的商品化软件【l j 。 g a s o r 已经在c + + 对象模型的基础上建立了以小层为中心的储层对象模型。目前, g a s o r 的大部分代码是用c + + 编写的,但随着它的不断改进,g a s o r 的各个功能将 逐渐完善。利用当前各种编程语言所带来的优越性,g a s o r 储层对象模型越来越多的 功能将利用其他编程语言实现。目前越来越多的功能将用c 群来实现,g a s o r 将长期处 于c + + 与c 撑代码二者共存的状态中。这就要求在系统中采用适合g a s o r 的行之有效的 跨语言互访技术,能够有效地整合这两种不同技术的部分,使得g a s o r 的储层对象模 型在两种语言间能够互访。 本课题的研究主要是为了在g a s o r 原有的基础上,利用面向对象的思想分析模型现 状,并选用合适的跨语言访问技术,实现g a s o r 的储层对象模型在两种语言间互访,实 现在整个架构下的各对象模型的集成。 就其意义而言,对于用户来说,使用户更容易理解软件的流程,让用户主动的去使 用软件,而不是被动的被系统的必须流程所牵制。真正实现面向对象的特点。对开发人 员而言,能够实现对系统的更好理解,在系统功能不断丰富的情况下,在原有构架的基 础上,添加新功能。根据用户的不断需求,改进g a s o r 储层对象模型的内部组织结构。 对于g a s o r 而言,让在面对系统需求的变化时不再疲于奔命,而能以一种优雅的、自然 的衔接方式,实现更好的通信。 1 2 国内外研究现状 本课题涉及到的主要研究领域为面向对象和跨语言访问技术。 1 2 1 面向对象 面向对象的方法来源于二十世纪六十年代末的s i m u l a 语言,该语言的特点是引入了 数据抽象和类的概念,后来的s m a l l t a l k 语言为面向对象程序设计奠定了基础【2 1 。面向对 象技术是一种新的软件技术,从提出面向对象的概念起,到现在逐渐发展成为一种比较 成熟的编程思想,并且成为目前软件开发领域的主流技术。同时,它不仅局限于程序设 计方面,已经成为软件开发领域的一种方法论。它对信息科学,软件工程,人工智能和 西安石油大学硕士学位论文 认知科学等都产生了重大影响。尤其在计算机科学与技术的各个方面影响深远。从认识 论的观点出发,面向对象的思想比较符合人类的思维方式【3 】。通过面向对象技术,可以 将客观世界直接映射到面向对象解空间,从而为软件没计和系统开发带来革命性影响。 八十年代末以来,随着面向对象技术成为研究的热点,产生了几十种支持软件开发技术 方面的面向对象方法。其中,b o o c h ,o m t ,c o a d y o u r d o n 和j a c o b s o n 的方法在面向对 象软件开发方面得到了广泛的认可。 1 2 2 跨语言互访技术 为了满足不同领域内所研究问题的需要,提出了异构应用系统的概念。在本课题的 研究中,异构应用系统是指用不同语言实现的功能模块在应用系统整体架构下集成后形 成的系统。 本课题所研究的跨语言访问技术也是基于这种异构系统的,通过在对象层次上的跨 语言互访实现不同语言间的通信。以g a s o r 储层对象模型为例,结合g a s o r 自身情 况,实现基于储层对象模型的c + + 对象模型和c 撑对象模型之间的互相访问。 不同语言间的通信可通过三种手段来实现。 第一:函数。这是面向过程的语言之间通过协议来实现语言的互访,它在形式上表 现为函数。比如在c 代码编写的模块中调用f o r t r a n 实现的函数,在p a s c a l 编写的模块中 调用用c 语言实现的函数。这种适合于面向过程的语言之间的互访。若是两种面向对象 的编程语言之间互访,两边都是对象,互访的手段成为瓶颈,如果采用函数方式,则退 化成低级的面向过程的方式。 第二:c o m 组件对象。其本质上是面向过程语言朝着面向对象方面的一次努力,它 与c + + 无关,c o m 组件对象是为了在c 语言的基础上构建面向对象的大厦。对本身就支 持面向对象思维的c + + 来说,这种方式过于简单和繁复。若是在c + + 的基础上,用c o m 技术实现互访,则参数类型受到限制。c o m 标准对于对象方法的参数类型有严重的限制。 第三:n e t 类对象。这种技术为不同的面向对象语言之间实现互访提供了条件。它 是建立在面向对象基础上的,确立了对象层次上语言之间互访的约定。这些约定,使得 跨语言访问技术变得容易。微软在标准c + + 的基础上进行了非标准的扩展,这些扩展被 称作m a n a g e dc + + ,这些扩展和其他n e t 语言( 如c 群,v b n e t ) 一样,可以用来编写n e t 程序。而标准c + + 依然可以编写原生程序。s t dc + + 是作为这种新语言的一个子集。用 这种语言编写的程序,在编译之后生成的代码中既可以有原生代码,也可以有n e t 代码。 因为同属一个大的语言,s t dc + + 于m a n a g e dc + + 可以非常方便的在同一个源文件中混 合使用。 2 第一章绪论 1 3 课题的主要内容 从理论上,本课题介绍了面向对象的基本技术理论和当前存在的各种形式的跨语言 互访技术。从g a s o r 储层模型系统出发,本课题研究了g a s o r 储层对象模型的跨语 言互访技术理论。 从实际工作出发,结合g a s o r 自身实际情况,本课题将对当前面向对象整体架构 下g a s o r 的组织形式进行详细的分析。其次,本课题研究分析c 群对象模型的主要功能, 以及它与g a s o r 之间的关系。这关系主要包括在g a s o r 中该模块的预处理数据与 g a s o r 原始数据之间的关系。在g a s o r 的当前工程和小层中,确定c 撑对象模型与 g a s o r 的c + + 对象模型的交互方式,r i p e n 载方式,数据处理方式和存储方式,及g a s o r 储层对象模型的各层组织结构中的交互方式。其次,本文结合当前的各种跨语言访问技 术,对g a s o r 进行可行性分析。首先,本文从理论上建立起结合g a s o r 实际情况的 储层对象模型的跨语言访问技术,再从实际出发,实现在对象层次上的跨语言互访而不 是面向过程的在函数层次上的互访。 1 4 课题来源 本文得到“储层地质统计分析系统g a s o r p c 微机版开发与推广”,陕西省科技厅 2 0 0 3 年科技推广计划项目( 项目编号为2 0 0 3 k t - 0 0 8 ) 的资助。 1 5 论文的组织结构 第一章:绪论。本章简单介绍了本课题的研究背景、课题来源、课题的国内外研究 现状以及本论文将要研究的内容。 第二章:面向对象技术理论。本章对本课题涉及到的面向对象的理论技术做以介绍 和分析说明。 第三章:跨语言互访技术理论。本章从两个方面对跨语言互访技术分析,分别是以 纯语言为出发点和以项目为出发点。除了对当今国内外的,针对不同项目需求的各种语 言互访技术做以分析介绍之外,主要是以g a s o r 为基础,根据面向对象的方法,针对 c 撑对象模型和c + + 对象模型提出跨语言互访的技术理论。 第四章:g a s o r 储层对象模型的跨语言互访的总体分析与设计思路。本章结合 g a s o r 的实际情况,提出了在对象层次上的跨语言互访理论技术。 第五章:g a s o r 储层对象模型的跨语言互访技术的实现。本章以一个实际的对象 模型为例,结合第四章的理论技术,通过n e t 对象模型这个间接桥梁,实现了c 撑对象 模型和c + + 对象模型的跨语言互访。 第六章:结论。本章总结了研究中的主要技术理论。 3 西安石油大学硕士学位论文 第七章:展望。本章总结了g a s o r 储层对象模型中已经解决的问题,并提出了在 未来的发展过程中需要改进的建议。 4 第二章面向对象技术 2 1 面向对象概念 第二章面向对象技术 面向对象( o b j e c to r i e n t e d ) ,台湾翻译为对象导向,面向对象就是按对象的观点来 思考问题,把程序运行的过程看作是一组对象之间相互协作的过程【4 1 。而传统的面向过 程的观点是:程序= 运行的代码。 面向对象方法是以认识论为基础,从对象出发,用对象来理解和分析问题空间,并 设计和开发出由对象构成的软件系统( 解空间) 的方法。由于问题空间和解空间都是由 对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言 之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。 面向对象方法学的特点是封装的类和对象、多态性的消息传递机制,可以用如下方 程概括:0 0 = o b j e c t + c l a s s e s + l n h e r i t a n c e + c o m m u n i c a t i o nw i t hm e s s a g e 引。 在现实生活中,一个文件的一个段,工作站上的一个窗口,软件的一个菜单等都是 一个对象。它是可以完成自己的功能的独立的单元,而不是像c 语言那样分成一个个的 函数。对象可以是具体的,如文件系统中的一个文件;对象也可以是概念的,如多处理 操作系统中的一个时序策略表 7 1 。现在纯正的面向对象语言主要是i a v a 和c 群,c + + 也支持 面向对象。概括得说,面向对象方法具有以下四个要点: 1 认为现实世界是由各种对象组成,任何事物都是对象,复杂的对象可以有比较简 单的对象以某种方式组合而成。 2 把所有对象都划分成各种对象类( 简称为类) ,每个对象类都定义了一组数据和一 组方法。 3 按照子类( 也称导出类) 与父类的关系,把若干个对象类组成一个层次结构的系统。 4 对象之间仅能通过传递消息相联系。 2 2 面向对象优点 从认识论的角度出发,面向对象方法改变了人们认识世界的方式。作为一种方法学, 它按照世界本来的方式去思考,使得从问题域到计算机间的鸿沟变窄。 从编程的角度出发,面向对象方法反映在程序语言中,也就是使用面向对象语言所 带来的好处。这种优点体现在支持面向对象的程序语言可以更好的表达面向对象的设计。 面向对象的概念与思想以多种形式同时出现在计算机科学的诸多领域【8 】。面向对象 技术是2 0 世纪9 0 年代对软件的最重要发展。它改变了传统的构建软件的方式,也改变 了全球范围内的网络和不同体系结构计算机上的应用程序的相互通信方式。面向对象的 优点在于建模能力强,业务模型很清晰,代码复用程度高,易于维护,降低开发成本。 两安石油大学硕士学位论文 面向对象的软件开发是一种新的可以减少成本、提高可用性和灵活性的高效的软件系统 的开发方法【6 1 。 2 3 面向对象与面向过程 面向对象与面向过程是两种思考和解决问题的方法,两者并不是对立的极端,面向 对象是面向过程的扬弃。在g a s o r 储层对象模型中,对g a s o r 架构的重构过程是面向 过程到面向对象的一次改进。 面向过程中只注重了处理过程( 算法) ,却忽视了与处理过程密切相关,同样重要的 数据。而面向对象是把数据和处理过程作为一个整体,它把被处理的数据提升到与处理 过程一样重要的对位,因此形成对象的概念。这种方法以众多的对象及交互模式为中心。 面向过程与面向对象的比较如图2 1 所示。 ( a ) 面向过程 对象 ( b ) 面向对象 图2 - 1 面向过程与面相对象的比较 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现, 使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象, 建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤 中的行为。 面向过程的方式,其思维方式和方法布局注重深度。其调用链形成一棵链条很长的 树( 纵向联系) ,上级节点和下级节点互为上下文,上级节点单独抽出去无法完成任何工 作,越核心的功能依赖层次越低的下层实现。联系太紧密,所以很难重用,从而导致修 改时的链条也很长。从重用的角度看,结构化方法中的模块是面向本系统的功能单元, 是特定为本系统服务的,加上基于过程的不稳定性,几乎没有重用的可能【1 3 】。 面向对象的方式,其方法布局是尽量把调用的级次链拉平,将方法原子化,然后分 离到独立的功能包:类里面更注重广度,并强调类完成功能时越孤立越好。与其它类的 关系越不紧密越好( 斩断上下文) ,如果需要与其它类通信,也是通过相对固定的接口来 6 第二章面向对象技术 联系( 横向联系) 。面向对象的过程也就是把方法布局拉平,并封装到平级对象中的过程。 面向对象设计把分析阶段得到的需求模型转变成符合成本和质量要求的、抽象的系统实 现方案,从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程【9 1 。 2 4 对象的建立 对象的建立来自于两个领域,问题域的对象和解域的对象( 程序域对象) 。 一般来说,问题域中的对象会全部出现在程序域中,因为程序中为了对现实世界中 的对象进行处理,必然会提及这些对象。问题域的对象存在于业务领域中,以g a s o r 储层对象模型为例,如工程( a r o j e c t ) 、小层( l a y e r ) 、相组( f a c i e s g r o u p ) 等。 程序域的对象是指除了包括问题域中的全部对象外,还包括那些对用户不可见的对 象,这些对象的存在仅对于程序本身具有意义。以g a s o r 储层对象模型为例,如u i 元素, 如各种对话框、树形视图对象、树上的结点、字符串、i os t r e a m 等。 作为一个程序,它必须与它所处的计算机环境发生联系。换言之,作为一个程序而 存在,它还需要一些并不存在于业务领域中而仅与计算机环境相关的概念的支持。用户 在使用我们的程序( g a s o r ) 的时候需要和这些对象打交道。也就说用户的脑子里必须 有这些概念才能使用我们的程序,但这些概念与业务领域并无关系,譬如工程的概念 ( p r o j e c t ) 。 2 5 类与对象 2 5 1 类 类是对某一类事物的描述,是抽象的、概念上的定义【刀。人们习惯于把具有相似特 征的事物归为一类,归类是人类认识客观世界的基本方法。在面向对象技术中,所谓的 类就是对具有相同操作和相同属性的一组相似对象的定义。也就是对一组具有相同特征 的对象的描述。简而言之,类就是对具有相同行为和属性的多个对象的描述。类的表示 方法如图2 2 所示: 类名 属性 操作 图2 2 类的表示方法 具体来说,类由方法和数据组成,它是关于对象性质的描述,包括外部特性和内部 两安石油大学硕上学位论文 实现两个方面。类通过描述消息模式及相应的处理能力来定义对象外部特性,通过描述 内部状态的表现形式及固有处理能力的实现来定义对象的内部实现。类的形式如图2 3 所示: 2 5 2 对象 厂 类 t 外 部 实 现 内 部 实 现 内部状态的表现形式 消息模式1 处理能力1 的实现 消息模式n 处理能力n 的实现 图2 3 类的形式 对象可以形式的定义为: o b j := 其中,i d 是对象的标识:m s 是对象的功能或受理的操作集合:d s 是对象的状态 或数据结构;m i 是对象的消息名集,也称对外接口或协议【1 2 】。 对象,也就是某概念的实例。因此,对象又称作实例,是实际存在的该类事物的每 个个体【l0 1 。对象的表式方法如图2 4 所示: 图2 - 4 对象的表示方法 由于对象是类的实例,一个类的各对象所拥有的操作都是相同的,因此,对于对象 只需要描述对象名和其属性即可。 对象之间存在着一定的关系,而对象之间的交互与合作会构成更高级的行为或是系 统。对象间有以下几种关系: 1 对象之间由分解或组合所构成的关系,如自然界中的树由树叶、树枝、树干、树 第二章面向对象技术 根等对象组成。这说明一个对象可以由其他的对象来构成。因此它们的关系通称为“包 含”关系。这种关系能形成结构性的层次。 2 具有代表一种一般特性的对象之间的“聚合”关系,形成一种类型层次。如水果这 一类就聚合着苹果、葡萄、梨等对象,反之,可以说是香蕉是一种水果。 3 代表了更一般的对象之间在物理上或概念上有关的“相关”关系,如一个对象使 用另一个对象的服务。如苹果挂在树枝头上,这里水果与果树的关系就属于第三种关系。 这种关系可以包括所有具有直接或间接的各种简单或复杂的关系。这几种关系是我们对 现实世界建立模型的基础。第一种和第二种将构成对象结构,同一级的对象存在相互的 合作关系而显示了其行为特性。第二种构成类结构,代表了其公共特性。这此关系不是 完全独立的。在对象结构中的每一个对象代表了某类的一个特例。 在面向对象的系统中,它的所有信息都被存储在对象中,并且只有在对象被消息激 发的时候才能执行相应操作。使用该对象时,只需要知道这个对象提供了什么操作即可。 这体现了信息的隐蔽性,即封装性。 2 5 3 类与对象的关系 面向对象的设计的重点是类的设计。类是用来表达概念的,它只存在于人的大脑或 源代码中。正如现实世界中没有抽象的人,只有一个个具体的人,一个运行中的程序中 也绝对没有类,而只有对象。将类本身做为对象是对类理解的一个误区。 没有类a 调类b 的涵数的说法,只有类a 的某个对象调用类b 某个对象的涵数。忽视 了这一点,就等于忽视了对象,以及它与类的差别。就等于忽视了同一个成员函数中的 t h i s 指针可以指向同一个类但却是不同对象的事实。忽视了这个事实,就等于忽视了多态 的存在。忽视了多态的存在,就等于忽视了面向对象的根本所在。 在面向对象的系统中,每个对象属于一个类,属于某个类的一个对象称为该类的实 例( i n s t a n c e ) ,一个实例就是由类产生的一个对象。类描述实例的结构,而实例的当前状 态由在实例上执行的操作来定义,在一个类中,每个对象都可以使用类中提供的函数。 一个对象的状态则包含在它的实例变量中。 实际上类是建立对象时使用的“样板”。按照这个样板所建立的一个个具体的对象就 是类的实际例子。实例的行为和信息结构由类定义,每个实例有个惟一的标识。不同的 实例可以由同一个类产生,每个实例由定义在类上的操作操纵。不同实例可以被不同的 操作序列操纵,因而会有不同的内部状态,如果这些实例以完全相同的方式操纵,它们 的状态也会相同。 总之,类定义了对象的操作和信息结构,而实例定义了每一个对象的状态。当使用“对 象”时,既可以指一个具体的对象,也可以泛指一般的对象。使用“实例”时,必然是指一 个具体的对象。 9 两安石油大学硕七学位论文 2 6 面向对象的编程过程 面向对象的基本思想是尽可能的运用人类自然思维方式来构造软件系统,它直接反 映了人们对客观世界的认知模式:从特殊到一般的归纳过程和从一般到殊的演绎过程。 面向对象的基本观点如下: ( 1 ) 客观世界是由对象组成的,复杂的对象可以由简单的对象组成。 ( 2 ) 具有相同的数据和相同的操作的对象可以归并为一个类,对象是类的一个实例。 ( 3 ) 类可以派生出予类,子类继承父类的特性,又可以有自己的新特性。子类与父类 形成类的层次结构。 ( 4 ) 对象之间通过消息传递相互联系。 面向对象编程的基本过程:从对象到类,再从类到对象。编程的基本过程如图2 5 所示: 图2 5 面向对象的编程过程 面向对象的编程过程是从个别到一般,再从一般到个别的认识过程【13 1 。从具体的实 例到抽象的概念,再从概念到普遍的实例。编程的过程就是理解的过程,理解的过程就 是认识不断深化的过程。 2 7 面向对象技术的基本特征 采用面向对象的方法学解决问题时,要遵从的基本原则是:按人们通常的思维方式 建立问题区域的模型,设计尽可能自然地表现求解方法的软件【l l 】。为了实现上述基本原 则,必须建立直接表现组成问题区域的事物以及这些事物间的相互联系的概念,还必须 建立适应人们一般思维方式的描述范式。在面向对象的设计方法中,对象( o b j e c t ) 和传递 消息( m e s s a g e p a s s i n g ) 分别是表现事物及事物间相互关系的概念。类( c l a s s ) 和继承 ( i n h e r i t a n c e ) 是适应人们一般思维方式的描述范式。方法( m e t h o d ) 是允许作用于该类对象 上的各种操作。这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性 ( e n c a p s u l a t i o n ) 和继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现 类与类之间的关系,以及由此带来的实体的多态。陛( p o l y m o r p h i s m ) ,从而构成面向对象的 基本特点。面向对象方法包括封装性、继承性、多态性等特点,这些特点使面向对象方 法具有良好的应用前景【6 】。 用面向对象的方法进行软件开发时,可区分三种不同含义的对象:实在对象,问题 1 0 第二章面向对象技术 对象和计算机对象,这三类对象可表示为图2 6 : 多多 实问 表示 。 计 在 抽象 题算 对对机 象象 模拟 对 象 图2 - 6 三类对象间的关系 面向对象技术的基本特征主要包括三个方面:封装性,多态性和继承性。 图2 7 面向对象基本特征 两安石油大学硕士学位论文 第三章跨语言互访技术 通常把组合两种或两种以上程序设计语言,通过相互调用、参数传递、共享数据结 构和数据信息而形成程序互访的过程称为跨语言互访技术。 语言互用性是一种代码与使用其他编程语言编写的另一种代码进行交互的能力。语 言互用性可以有助于最大程度地提高代码的重复使用率,从而提高开发过程的效率。 依据目前的技术理论,本章将从两个方面对跨语言互访技术分析,分别是以纯语言 为出发点和以项目为出发点。 目前,针对各种开发项目的需要,跨语言互访技术在不同语言和领域之间有不用的 表现形式。换言之,在当今的v b ,c # ,c + + ,p h y t h o n ,c ,p e r l ,m a t l a b ,d e l p h i ,v c + + , 汇编等语言中,根据项目的需求以及这些语言的特点,分别采用了适合于项目开发的跨 语言互访技术。因为项目之间的差异,所以在以项目为本的开发中,都是以项目为出发 点而研究出的跨语言互访技术,它是结合各种项目的实际需求的。除了以项目为本的跨 语言互访技术,也有一些跨语言访问技术是从语言的角度出发,根据语言之间的特点, 专门提出了几种语言之间互访的技术理论,作为项目开发的基础,为项目开发提供了便 利服务。 本课题是针对g a s o r 的跨语言互访技术研究。就g a s o r 储层对象模型而言,目 前主要是为了实现储层对象模型在c 撑和c + + 这两种语言间的互访。因此,本章除了对当 今国内外的,针对不同项目需求的各种语言互访技术做以分析介绍之外,主要是以 g a s o r 储层对象模型为基础,根据面向对象的方法,针对c 撑对象模型和c + + 对象模型 提出跨语言互访的技术理论。 目前,跨语言互访的技术主要分为三种:通过c 风格的函数互访,通过c o m 接口互 访和通过n e t 平台互访。 3 1 通过c 风格的函数互访 这是面向过程的语言之间通过协议来实现语言的互访,它在形式上表现为函数。比 如在c c + + 代码编写的模块中调用f o r t r a n 实现的函数,汇编语言与c c + + 语言的函数互访 以及在p a s c a l 编写的模块中调用c 语言实现的函数,这种适合于面向过程的语言之间的互 访。若是两种面向对象的编程语言之间互访,两边都是对象,互访的手段成为瓶颈,如 果采用函数方式,则退化成低级的面向过程的方式。以下介绍几种通过c 风格的函数互 访的方法本小节主要以f o r t r a n 和c c + + 代码互访,汇编语言与c c + + 语言的函数互访, 来说明这种c 风格函数互访的原理和基本技术。 第三章跨语言互访技术 3 1 1f o r t r a n 语言与c c + + 语言之间的互访 f o r t r a n 语言是f o r m u l at r a n s l a t i o n 的缩写,意为“公式翻译 。它是为科学、工程 问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较 强。f o r t r a n 语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效 率。语法严谨,可以直接对矩阵和复数进行运算,这一点类似m a t l a b 。广泛地应用于并 行计算和高性能计算领域。 集成开发环境c o m p a qv i s u a lf o r t r a n6 x ( v 6 0 、v 6 1 、v 6 5 和v 6 6 ) 和m i c r o s o f t v i s u a lc + + 6 0 允许将这两种语言的源程序添加到一个工程或项目中。f o r t r a n 与c c + + 又同属编译型语言,两者中的任何一种语言都可用来编写主程序或调用程序,来对另一 种语言编写的例程实施调用。但由于f o r t r a n 与c c + + 在堆栈管理、目标例程命名、参 数传递等方面所遵循的规则( 统称为调用约定) 不尽相同。要使混合编译获得成功,必须 全面一致地协调两者所使用的调用约定。f o r t r a n 使用的调用约定有缺省约定、c 和 s t d c a l l ,c c + + 使用的调用约定有c d e c l ( 缺省约定) 、s t d c a l l 等 2 9 , 3 0 。 f o r t r a n 与c c + + 间的例程调用,其参数均通过堆栈来传递。迸栈时,例程参数从 左到右;出栈时,例程参数从右到左,即先进栈的参数后出栈。在清理使用完的堆栈时, 究竟是由调用程序还是由被调用例程负责清理堆栈,不同的调用约定有不同的规定。在 f o r t r a n 的c 约定、c c + + 的c d e c l 约定下,是由调用程序负责清理堆栈,这使得调用程序 的目标代码稍大一些,因为在每一调用点处都要插入管理堆栈的代码【3 6 】;而在f o r t r a n 的缺省约定和s t d c a l l 、c c + + 的s t d c a l l 约定下,则是由被调用例程清理堆栈,管理 堆栈的代码驻留在被调用例程内,且只出现一次。根据堆栈管理情况,将f o r t r a n 与 c c + + 调用约定的匹配情况如表3 1 所示。不管是用c 还是用c + + 编写主程序,f o r t r a n 实现的外部子程序都是相同的。在独立程序单元的外部子程序中直接规定调用约定、子 程序目标名和参数传递方式,这些设置和f o r t r a n 主程序调用c c + + 代码相同。 表3 1f o r t r a n 与c c + + 调用约定的匹配 3 1 2 汇编语言与c ,c + + 语言的函数互访 为了提高c 语言程序对硬件的处理效率,需要让c 语言与汇编语言结合。实现汇编和 c 语言函数混合编程能够容易地完成数学计算。这种混合编程的关键是在统一的程序接 西安石油火学硕士学位论文 口规则下,正确地进行参数传递。 c 语言与汇编语言互访的约定规则主要有五种,分别是命名约定,声明约定,寄存 器使用约定,存储模式约定和参数传递约定【2 7 , 2 8 , 3 1 , 3 7 。 命名约定规定:在被c 程序调用的汇编语言子程序中,所有的标识符前都要加下划 线“一”。此外,相互调用时,汇编语言源程序中的标识符按照c 语言的习惯最好采用小写 字母。 声明约定规定:c 对所要调用的外部过程、函数、变量均采用e x t e m 予以说明,并且 放在主调程序之前,汇编语言程序的标识符为了能在其它模块可见,必须用p u b l i c 操作符 定义它们。 寄存器使用约定:对于b p ,s p ,d s ,c s 和s s ,汇编语言子程序如果要使用它们, 并且有可能改变它们的值时,要求进行保护,a x 和d x 寄存器承担了传递返回值的任务。 如果c 程序启用了寄存器变量,则汇编语言子程序使用s i 和d i 前必须保护,退出前恢复。 存储模式约定:c 程序和汇编程序必须具有相同的存储模式,相同的存储模式将自 动产生相互兼容的调用和返回类型。存储模式和段处理在汇编语言中实现起来比较复杂, 一个比较好的方式是使用简化的段伪指令来处理。伪指令,m o d e l x x x 表示在汇编语言中 采用的存储模式,其中x x x 用六种模式( 极小、小、中模式、紧凑、大、巨模式) 中的一种 代替。 参数传递约定:c 程序可以通过堆栈将参数传递给被调用函数,在汇编语言中将b p 作为基址寄存器。调用程序先将来自于c 程序中的参数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院新员工入职培训体系
- 城市交通规划历史重点基础知识点
- JavaScript实现网页五子棋小游戏
- 《矿物质与健康》课件
- 《企业数字化转型之课件解决方案》课件
- 【培训课件】如何提升顾问单位的满意度与服务品质
- 进校陪读协议书范本
- 车站管理协议书范本
- 湖北中考英语试题单选题100道及答案
- 足浴店购销合同协议
- 2025届陕西省高考适应性检测(三)物理试题+答案
- 西安职业技术学院招聘笔试真题2024
- 2025年动车组机械师(高级)职业技能鉴定参考试题库(含答案)
- 人音版七年级下册《表花》课件
- 第六单元《老爷爷赶鹅》课件 人教版音乐一年级下册
- 酒店管理制度大全
- 天车司机考试试题及答案
- 国际学校综合课程教研组计划
- 2024年中国心力衰竭诊断与治疗指南更新要点解读
- 从财务视角看央企“一利五率”体系及实现路径
- 学大讲义六年级下册数学(含答案)第一讲 百分数(二)及百分数的复习
评论
0/150
提交评论