你是如何理解面向过程的方法和面向对象的方法的?他们的区别主要是什么? - 高飞网
11人看过

你是如何理解面向过程的方法和面向对象的方法的?他们的区别主要是什么?

2014-04-20 01:24:52

面向过程方法又称为结构化方法,起源于20世纪70年代,主要由面向过程分析、面向过程设计和面向过程编程三部分组成。

面向过程分析:帮助开发人员定义系统需要做什么(处理需求),系统需要存储和使用那些数据(数据需求),系统需要什么样的输入和输出,以及如何把这些功能结合在一起来完成任务。面向过程分析的主要工具是数据流图(DFD,这是一种显示面向过程分析中产生的输入、处理、存储和输出的图形模型。

在现代面向过程设计中,也引入了事件的概念。

面向过程设计:面向过程设计是为下列事务提供指导:程序集是什么,每个程序应该实现哪些功能能,如何把这些程序组成一张层次图。面向过程设计的主要工具是结构图,这是一种表达程序模块层次的图形模型。

面向过程编程:具有一个开始和结束的程序或者程序块,并且程序执行的每一步都由三部分组成:顺序、选择或者循环结构,实现这种思想的最典型的语言就是C。

整个面向过程设计的根本目标是:把复杂的系统分解成简单模块的层次图。

面向对象的方法由面向对象分析(OOA)、面向对象设计(OOD)以及面向对象编程(OOP)三部分组成。

面向对象方法与面向过程方法根本区别,是把信息系统看成一起工作来完成某项任务的对象集合,而对象是系统对消息作出做出响应的事物,所以面向对象方法中最值得关注的不是它该做什么,而是它如何做出反应,也就是消息,这是和面向过程方法的根本不同。

面向对象分析(OOA):定义在系统中工作的所有类型的对象,并显示这些对象如何通过相互作用来完成任务,主要工具是统一建模语言(UML

面向对象设计(OOD):定义在系统中人机进行通讯所必需的所有类型的对象,并对每种类型的对象进行细化,以便可以用一种具体的语言来实现这些对象。

面向对象编程(OOP):用某种具体语言(C++、Java、C#、C的对象模块等)来实现各种对象的行为,包括对象间的消息传递。

这里的关键是类图:用面向对象的方法显示系统中所有对象所属类的图形模型。

面向对象的方法起源于20世纪60年代挪威Simula编程语言的开发,80年代建立了整体框架,90年代由于C++的崛起和UML被广泛认可,逐步成长为一种主要的和现代的分析和设计方式。

面向对象的方法和传统面向过程方法有很大不同,它的思维方式不是以设备结构为基础,而是利用可感知的对象来思考,对人而言,这是更加自然或者直观的。但是,如果只是把传统概念简单包装一下换成对象方法(比如封装),并不能得到实实在在的好处,反而使OO很难理解,面向对象的方法关注的是事件、重用和继承,关注的多态,它自己有一整套独特的思维方式,这和面向过程方法是根本不同的。

90年代中期以后,这种关注带来了许多新的思维,有代表性的就是设计模式的提出,设计的质量更高,系统的优化空间更大,这就是说应用面向对象的方法,将会给我们提高设计质量带来巨大的好处

由于面向对象方法把对象看成系统对消息做出响应的事物,这种与面向过程完全不同的看待计算机系统的方法,必然导致完全不同的分析、设计和编程方式。有人认为,学会了UML几张图或几个符号,就会对象方法了,这是个误会,UML只是一个表达的工具,关键是在什么层面上去思考。

有个问题,是不是使用面向过程的程序语言(比如C),就一定要使用面向过程方法,实践表明并不是这样的,面向对象更多的是一种思维方式,面向过程的语言只需要略加改造就可以应用这种思想(继承、封装、多态),国外在这些方面有很多成功的案例和讨论,国内在一些大型嵌入式项目中也有很好的尝试。

还没有评论!
54.162.166.214