面向对象技术与面向方面技术的比较研究.docVIP

面向对象技术与面向方面技术的比较研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象技术与面向方面技术的比较研究.doc

面向对象技术与面向方面技术的比较研究 朱雪刚1,2 钟绍春1 程晓春1,3 1(东北师范大学理想信息技术研究院 长春 130024) 2(长春税务学院 长春 130022) 3(Department of Computer Science,The University of Reading,England UK RG66AY,England) 摘 要 面向方面技术是在面向对象技术基础之上发展起来的软件技术,本文从基本概念、核心思想、程序设计、软件工程等方面,对两者进行了对比分析,并探讨了面向方面技术的研究方法。 关键词 OOP AOP 对象 方面 软件工程 1 引言 面向对象技术作为目前软件工程的主流技术,已被人们广泛接受,并运用面向对象的软件工程方法成功开发出了众多的应用软件,但在构造复杂的大型系统、分布式系统和灵活性要求较高的系统时,面向对象技术就有着明显的局限。在这类系统中都存在一些公共的功能点,例如安全、日志、调试、事务划分等等,这些功能点亦叫横向关注点(crosscutting concerns),使用面向对象方法(OOP),横向关注点会横跨多个模块,某个关注点的代码将遍布各处,结果会使系统难以理解、实现和演进。对于这类问题,人们提出用面向方面技术来解决。面向方面编程(AOP)是施乐Palo Alto研究中心在20世纪90年代发明的一种编程范式,是一种设计和编码横切关注点的技术,它使开发者能把横向关注点从系统中分离出来,最终以模块化(而不是分散的)方式来实现这些横向关注点,从而使代码更少耦合,更多内聚,并为系统提供更好的灵活性、可维护性、扩展性以及可复用性。 实际上,面向方面技术与面向对象技术是有联系的。面向方面技术是为了解决复杂的、分布的以及灵活性要求较高的现实世界问题,可看作面向对象技术的继承、进化和发展。正如AOP思想的创始人所说,“…我们85%的工作还是在用对象编程。我们解决了对象技术没有解决的问题。…我们并没有也不想一切推倒重来,我们提供的是一种15%的解决方案。”本文对两种技术在核心思想、基本概念、针对的问题、程序设计、对软件性能的影响、软件工程等几个方面作了比较和分析,说明面向方面技术的优势所在以及与面向对象技术的关系,并探讨了面向方面技术目前存在的一些问题。 2 两种技术的比较与分析 2.1 核心思想 面向对象技术认为系统是由各种各样的对象或对象类组成,每个对象都有自己的属性和行为,不同对象之间通过消息传递来相互作用和联系,从而构成不同的系统。对象具有封装性、继承性和多态性等特性。 面向方面技术是把一个复杂的系统看作是由多个关注点来组合实现。关注点可分为两大部分:核心业务关注点和横切业务关注点。核心业务关注点指的是系统将要满足的业务逻辑需求,表现为各个业务子系统,如学籍管理子系统、科研管理子系统等,而横切业务关注点则是各个业务子系统都可能涉及的一些公共需求,例如安全、性能、日志等。 从上面的分析可看出,面向方面技术和面向对象技术对系统需求的分解不同。面向对象技术把系统需求分解为对象,而面向方面技术将系统需求分解为关注点,关注点是比对象更抽象的概念,一个关注点可包含多个对象。 2.2 基本概念 面向对象技术中关于面向对象的基本概念,主要包括: (1)现实世界的任何客体,无论是有形的,还是无形的,都可化为具有统一模式的对象,并建立该对象的唯一符号标识。 (2)对象是构成系统的一个基本单位,由一组属性和一组行为组成。属性是用来描述对象静态特征的数据项,行为是用来描述对象动态特征的操作序列。 (3)具有相同属性和行为的一组对象的集合称为一个类,而任何一个对象都是某个类的实例。 (4)所有类可组成带根的有向无环图或层次结构,结构中的任何类均可继承其层次中的直接祖先或间接祖先的所有属性和方法。 (5)封装是面向对象方法的一个重要原则,是把对象的属性和服务组合成一个系统单位,并尽可能隐蔽对象的内部细节,只保留有限的对外接口使之与外部发生联系。 (6)多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。 关于面向方面的基本概念,主要包含以下几点: (1)方面的概念:方面是面向方面编程的基本的模块化单元,它是应用程序关注点的具体化。方面可以有方法(method)、字段(field)等,但是它的主要用途是容纳切入点(pointcut)、通知(advice)等。 (2)连接点:指的是在代码中发生水平捆绑的地方所需的程序流中定义良好的特征点。 (3)切入点:用于表示在特定情况下应该关注哪些连接点,它选择某些连接点以及与这些连接点相关的上下文值。 (4)通知:它是关注点的一个实际的实现。它将在到达某个给定的切入点时被执行。 (5)编织是AOP的一个术语,指横切

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档