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