一、 调研目的
为了更深入的学习计算机程序设计语言,了解不同程序设计方法的优缺点及适用情况,特进行此次调研。
二、 调研方法
通过自己学习以及互联网搜寻查找。
三、 调研结论
现阶段比较流行的是面向对象的程序设计方法,面向过程的程序设计方法也有些许使用。使用面向对象的程序设计方法,OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。还有一个最近比较新的思想,就是面向切面的程序设计方法,可以有效的解耦和。
四、 调研内容
对现今比较常用的程序设计方法进行分析比较并分析使用情况如下:
1) 面向过程的程序设计方法
- 介绍:面向过程就是把要解决的问题视(抽象)为一个过程,并通过不段对过程进行细分来解决问题。其中对于一个过程,只考虑起始条件和结果,在细分之前不考虑其具体步骤。“面向过程”是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
- 适用情况:对于比较简单的系统,或者是一些要求性能比较高的系统,适用面向过程的程序设计方法比较好。
2) 面向对象的程序设计方法
- 介绍:OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。面向对象的语言支持的概念包括:类与对象、继承、多态。
- 适用情况:适用于比较大型的、业务逻辑比较复杂的系统设计。
3) 面向切面的程序设计方法
- 介绍:面向切面编程,是一个比较热门的话题。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。比如我们最常见的就是日志记录了,举个例子,我们现在提供一个服务查询学生信息的,但是我们希望记录有谁进行了这个查询。如果按照传统的OOP的实现的话,那我们实现了一个查询学生信息的服务接口(StudentInfoService)和其实现类(StudentInfoServiceImpl.java),同时为了要进行记录的话,那我们在实现类(StudentInfoServiceImpl.java)中要添加其实现记录的过程。这样的话,假如我们要实现的服务有多个呢?那就要在每个实现的类都添加这些记录过程。这样做的话就会有点繁琐,而且每个实现类都与记录服务日志的行为紧耦合,违反了面向对象的规则。那么怎样才能把记录服务的行为与业务处理过程中分离出来呢?看起来好像就是查询学生的服务自己在进行,但是背后日志记录对这些行为进行记录,但是查询学生的服务不知道存在这些记录过程,这就是我们要讨论AOP的目的所在。AOP的编程,好像就是把我们在某个方面的功能提出来与一批对象进行隔离,这样与一批对象之间降低了耦合性,可以就某个功能进行编程。
- 适用情况:首先需要在面向对象的程序设计方法基础上,进行AOP设计,脱离了OOP,AOP什么都不是。其次,对于需要对一部分方法执行统一操作,可以用到AOP思想,实现不会重复编码,并且降低耦合性。
4) 面向接口编程
- 介绍:在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。
- 适用情况:实际上面向对象编程时,很多时候是需要同时面向接口编程的,尤其是为了实现面向对象的多态,是需要接口的。
5) 面向数据的程序设计方法
- 介绍:面向数据主要是指面向数据解析(DOP,Data-oriented parsing),也成为面向数据编程(data-oriented processing),是一种形式主义概率语法的计算语言学。DOP的构思是在1990年由RemkoSchain提出的,其目的是发展以绩效为导向的(performance-oriented)语法框架。不同于其他的概率形式主义,DOP考虑的更多的是在树库中所有的子树,而不是被限制在像2级子树(如:PCFGs)这样的结构中。已开发DOP已有多个。最初的版本是基于树替换语法的,而最近,DOP已与词汇功能语法(LFG)的结合。由此产生的DOP-LFG在机器翻译中的将会有广阔的应用。
- 适用情况:需要以数据为重点,批处理或实时的处理数据;包括处理大容量的大数据集;对数据应用复杂的数据变换等类似系统可以考虑这种设计方法。
6) 面向服务的程序设计方法
- 介绍:SOA是英文Service-Oriented Architecture的缩写,是一种进行系统开发的新的体系架构。在基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并且具有统一接口定义方式的组件(也就是Service)组合构建起来的,它因对迅速变化的业务环境具有良好适应力而备受关注。在SOA系统设计厂商中,IBM公司是SOA架构设计、销售的领头雁。
- 适用情况:要求高效率,高响应率,高集成度的程序。
各程序设计方法优缺点:
面向对象相对面向过程的缺点:
- 结构清晰。使人们的编程与实际的世界更加接近,所有的对象被赋予属性和方法,结果编程就更加富有人性化。
- 封装性。减小外部对内部的影响。封装将对象有关的数据和行为封装成整体来处理,使得对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。
- 容易扩展,代码重用率高。容易扩展,在大框架不变的情况下很容易就开发出适合自己的功能,实现简单,可有效地减少程序的维护工作量,软件开发效率高。
面向对象相对面向过程的缺点:
- 增加工作量。如果一味地强调封装,当进行修改对象内部时,对象的任何属性都不允许外部直接存取,则要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。
- 性能低。由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小的都开销很大。
面向切面编程的优点:
- 使代码低耦合,并且提高了重用性。
面向接口编程的优缺点:
- 用起来便利,布局清楚。
- 便于扩展,便于定义统一规范。
- 代码复用性略微差一点
面向数据编程的优点:
- 便于批处理或实时的处理数据。
- 便于处理大容量的大数据集。
- 便于对数据应用复杂的数据进行数据变换。
面向服务编程的优点:
- 效率:将业务流程从"烟囱"状的、重复的流程向维护成本较低的高度利用、共享服务应用转变。
- 响应:迅速适应和传送关键业务服务来满足市场需求,为客户、雇员和合作伙伴更高水准的服务。
- 适应性:更高效地转入转出让整个业务变得复杂性和难度更小,达到节约时间和资金的目的。
- 复杂性降低:基于标准的兼容性,与点到点的集成相比降低了复杂性。
- 重用增加:通过重用以前开发和部署的共享服务,实现了更有效的应用程序/项目开发和交付。
- 遗留集成:用作可重用服务的遗留应用程序降低了维护和集成的成本。
©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: 大学时期的一次常见程序设计方法调研
“大学时期的一次常见程序设计方法调研”的39个回复