计算机编程思想的发展

来源 :硅谷 | 被引量 : 0次 | 上传用户:scamponline
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 在计算机编程技术发展过程中出现三种编程思想——面向过程、面向对象和面向方面。对面向过程、面向对象和面向方面三种编程思想的核心理念、相关概念、优缺点及适用性进行分析。
  关键词: 计算机编程思想;面向过程;面向对象;面向方面
  计算机技术产生于二十世纪四十年代,随着软硬件水平的飞速发展和应用范围的扩大,计算机编程思想也历经变化,先后出现了面向过程编程、面向对象编程和面向方面编程这几种编程思想,它们的产生对软件技术的发展起了深远的影响[1]。
  1 面向过程编程
  面向过程编程,又称为结构化编程,C、Pascal和Fortran
  语言均采用面向过程编程思想。
  面向过程编程关注的是解决问题的步骤,先把软件系统分解成多个模块,然后逐步细化,完成整个软件系统。各模块之间存在相互调用和信息传递。
  面向过程编程的思维方式易于理解,条理清晰,曾被广泛应用,但随着软件系统规模的扩大和性能要求的提高,面向过程编程的缺陷日益明显。软件系统规模的扩大,使得模块的分解难度加大,模块之间的联系也更加复杂,软件的可靠性难以提高,可维护性差。
  2 面向对象编程
  在20世纪90年代,面向对象编程(OOP)逐步代替了面向过程编程。迄今为止,面向对象成为了主流的编程思想,已经发展到相当成熟的阶段。典型的采用面向对象编程思想的开发语言有C++、Pascal等。
  所谓面向对象就是在处理问题时,从该问题所存在的事物本身出发,以类及对象作为基本构造单元,逐步认识事物的属性和行为特征。面向对象的分析过程是人类认识客观世界的过程,更接近于人类思维的方式。
  面向对象编程的主要概念如下:
  1)对象(object):对象是对客观事物的一个实体的描述,是构成系统的一个基本单位,是分析问题的基准。
  2)类(class):类是具有相同属性和服务的一组对象的集合,对属于该类的对象集合提供了统一的抽象描述,内部包括属性和行为两个主要部分。简言之,类是对对象的抽象,而对象是类的实例化。
  3)抽象(abstract):抽象是面向对象编程思想的基本的原则之一,是对一类对象中所共有的属性和行为特征的提取。抽象包括数据抽象和行为抽象,数据抽象是指对该类对象的公共属性的抽象,行为抽象是指对该类对象可进行的公共操作的抽象。
  4)封装(encapsulation):封装是采用类机制将类的属性和行为进行捆绑,成为一个整体,使得类的内涵丰富而便于使用。
  5)继承(inheritance):继承是指子类不但具备父类的属性和行为, 还可以具备自身独有的属性和行为,子类的所有属性和行为还可以被它自身的子类继承下去,子类与父类间的继承关系呈现出的层次结构体现出现实世界中不同类型对象的之间的共性和个性关系,因此继承可以解决软件的可重用性问题,简化了程序设计。
  6)多态(polymorphism):多态是指具有继承关系的类可以使用同名行为,但行为内涵可以具有不同的定义,不同的对象将会根据自己所属的类来选择在实际运行中所使用的具体行为。多态性机制增加了面向对象软件系统的灵活性,提高了软件的可重用性和可扩充性。
  面向过程与面向对象的编程思想最根本的区别在于:前者从操作步骤出发,着重于对操作步骤地分解,将各个操作整合为模块,从而组成整个系统;而后者编程角度从对所处理的事物出发,着重于对事物的属性和行为的抽象,以及不同类型事物之间的共性和个性[2]。
  较面向过程编程相比,面向对象编程可以描述更复杂、更接近现实的系统,描述方法灵活,具备良好的可重用性和可扩展性,提高了软件系统的质量和开发效率,保证了对系统项目的有效管理。
  但在实际过程中,面向对象编程的缺陷也不容忽视,主要表现为代码散乱和代码纠缠。面向对象的首要工作是对所关注对象的界定,也就是类的设计,要给出类的属性和行为。但在现实过程中,常常会遇到横跨多个不相关模块的公共行为,如记录日志、异常处理、安全控制等等,即横切关注点。系统中频繁出现的横切关注点致使代码散乱,而横切关注点之间的关联又致使代码纠缠。代码散乱和代码纠缠使得面向对象编程的系统结构混乱,难以维护和扩展,降低了软件系统的质量。
  3 面向方面编程
  面向方面编程(AOP)的概念是Gregor Kiczales在Xerox Parc团队于20世纪90年代后期提出的,Filman与Friedman在2000年在OOPSLA关于分离关注点的讨论会上给出了得到公认的面向方面的定义。虽然面向方面编程还处于不完善的阶段,但它已经受到了广泛的关注。目前,采用面向方面编程思想的语言有许多种,如Aspect C++、Aspect J等等[3]。
  面向方面编程将软件系统中的所有业务逻辑分为核心关注点(Code Concerns)和横切关注点(Crosscutting Concerns),核心关注点处理系统中的独立的核心业务,横切关注点处理系统中的相对独立的非核心业务,横切关注点所涉及的业务功能在系统不同位置被多次使用。面向方面编程认为不需要在代码中显式调用横切关注点,而只要指定加入横切关注点的位置,那么系统在运行时自动执行横切关注点的业务功能。
  面向方面编程的主要概念如下:
  1)关注点(concern):关注点是指对特定业务的处理。软件系统是所有核心关注点和横切关注点的组合,在编码时分别实现,在运行时重新组合起来。软件系统中的关注点分为核心关注点和横切关注点。
  2)方面(Aspect):方面类似于面向对象编程中的类,但内涵更丰富。它将切入点和通知结合在一起,用于描述横切关注点。
  3)通知(Advice):通知是位于方面中修改行为或属性的代码。方面可以在特定条件下将通知嵌入特定位置,从而达到横切的目的。通知分为三种,before通知、after通知和around通知,分别表示操作是在连接点之前、之后或代替连接点。   4)切入点(Pointcut):切入点通过定义切入点表达式来过滤出感兴趣的连接点,是方面的作用点。
  5)连接点(Joinpoint):连接点是主程序和方面的连接处,指明了织入横切代码的位置。
  6)织入(Weaving):织入是指将通知的代码插入通知所对应的连接点的代码中,得到一个完整的软件系统。
  面向方面编程的开发步骤包括方面分解、关注点实现和织入。方面分解是指将软件系统分解为核心关注点和横切关注点。关注点实现是指对所分解的关注点的实现,核心关注点可以采用面向对象编程技术,横切关注点可以采用面向方面编程技术。织入是指通过创建方面来制定制定关注点之间的实施规则,从而得到最终的系统[4]。
  面向方面编程采用了横切关注点模块化来完成系统中业务逻辑的划分,实现了关注点的分离,较面向对象编程相比降低了系统实施的难度,解决了代码散乱和代码纠缠的问题。方面的设计使得系统的松散耦合性更强,代码冗余小,系统易维护,易扩充。
  虽然面向方面编程已受到广泛的关注和应用,但其本身存在的问题也给使用带来了一定的困难。例如切入点与基础程序的耦合性较强,基础程序结构的变化就可能导致意外的连接点丢失[5]。因此目前在开发过程中,面向方面编程技术只作为面向对象编程技术的补充加以运用。
  4 总结
  面向过程、面向对象和面向方面这三种编程思想是随着计算机软件规模的扩大和架构的复杂而依次出现的,各有其利弊,均得到应用。现在软件系统开发普遍采用的是面向对象编程;面向过程编程适用于功能简单而且可以用流程来表示的软件系统;面向方面编程目前只在软件系统的局部使用,作为对面向对象编程的补充。
  参考文献:
  [1]史永哲,计算机编程思想分析[J].陕西师范大学学报(自然科学版),2008(6):179-181.
  [2]刘晓峥,浅析面向过程与面向对象编程思想之异同[J].科技信息,2011(3):501-502.
  [3]古思山、蔡树彬、李师贤,从面向方面程序设计的定义到面向方面程序设计语言[J].计算机科学,2011(10):133-139.
  [4]鲍陈、汪千松,基于AOP的实时系统关注点分离方法[J].计算机工程与设计,2011(9):3082-3086.
  [5]朱春国、曾国荪,一种面向方面软件体系结构模型[J].计算机应用研究,2010(9):3387-3389.
其他文献
“如果你要把‘云朵’、‘猪肉’、‘运动’,甚至‘墨西哥’等词汇放到微博中,请三思吧,这样做可能导致美国周土安全部紧紧盯住你。”这篇有关美国网络监控的文章出自福布斯网站
期刊
电力行业作为关系国计民生的重要行业,在信息化应用上起步较早,但多数偏重产能与产业结构调整,整体应用水平仍有待提高。现在随着市场化进程的逐步推进,电力企业之间信息化缺乏统一标准的问题更为明显。  市场化、规范化是电力行业改革的必然趋势,那么在新形势下,面对市场化、规范化的行业发展要求,由于一直处于相对垄断地位,加之变革频繁,电力行业一直在专注如何贯彻体制改革和如何提高产能,所以整个电力行业的信息化应
据相关媒体报道,最新一代Wi-Fi传输标准IEEE802.11ac已成为众多厂商相继支持的新Wi-Fi标准,包括思科、华硕、D-link、Netgear、Buffalo等厂商,都已有支持802.11ac标准的Wi-Fi基地台产品,理论传输值突破1Gbps。而这波新的搭载风潮,也将随着无线基站的推出逐渐延烧到移动终端上。  据了解,搭载此新芯片的手持终端产品,最快在明年第一季就可问世,而这也将驱使新
随着全球IPV4地址即将在“未来几个星期内”用尽,业内普遍认为,IPV4地址的提前告罄将加速IPV6的发展,IPV6是目前唯一能解决IP地址短缺的可行途径。从去年开始,电信运营商中国
无论是公共云还是私有云的搭建和应用都是一项艰巨而复杂的工作,不能一蹴而就。  前几天跟领导一起采访一家国内中间件公司,路上,领导抛出一个新观点:云计算其实就是一个大的中间件。此语一出,当时就让我摸不着头脑,怎么云计算又跟中间件扯上关系了呢?细想之下,这两者还真有些渊源,云计算不正是建立在中间件原则基础之上的吗?换句话说,云计算就是一种新的中间件。  如果从一个IT架构师的角度看,肯定会发现一些相似
1958年9月15日,毛泽东主席从武汉乘船来安徽视察,随行人员有国防委员会副主席张治中、中共中央政治局委员谭震林、中共中央委员张云逸、罗瑞卿(公安部长)等人。16日下午,毛主
近10年来,受油价剧烈波动和金融危机、债务危机的巨大影响,世界经济的增长起伏不定,特别是2008年金融危机后,世界经济的复苏历经波折。在欧洲主要国家领导人的推动下,杰里米·里夫金的“第三次工业革命”模式在欧洲某些地区已率先进行“试点”,并取得了一些成绩。  近10年来,受油价剧烈波动和金融危机、债务危机的巨大影响,世界经济的增长起伏不定,特别是2008年金融危机后,世界经济的复苏历经波折。全球政、
随着信息技术和网络技术的不断发展,流媒体技术以其诸多优点得到广泛的应用,随之也带来数字媒体版权保护和信息安全难题。而DRM(数字版权管理)且能有效的解决这一难题。基于
主要论述微动疲劳的研究的必要性和微动疲劳的基本概念。我们研究微动疲劳主要从4个部分来进行论述,即微动疲劳的影响因素、机理研究、防护方法和寿命预测的发展过程,其中机