《论面向过程的思想与方法(共5页).doc》由会员分享,可在线阅读,更多相关《论面向过程的思想与方法(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上论面向过程的编程思想和方法一、 概念理解 面向过程就是分析解决问题所需要的步骤,然后用函数把这些步骤一步步实现. 面向过程化程序设计是先确定算法,再确定数据结构。 对此我的理解是确定流程是最关键的,决定用什么流程,并一步步划分成若干个模块,然后把每个模块划分成更小的模块,来实现业务需求.比如,盖一座大楼,你想到的是楼怎么盖,哪里要有柱子,哪里要有梁,哪里楼梯等等(这就是面向对象),至于柱子该怎么建,用什么建,方的圆的,等等,这就是面向过程。 过程如图所示:二、 面向过程的编程思想“面向过程”是一种以过程为中心的编程思想。结构化方法的基本思想主要体现在以下三方面.v 自
2、顶向下,逐步求精:把程序看成是一个逐步演化的过程。把一个系统与程序看成是一层一层的。例如:户籍管理系统可以划分为:户籍迁入迁出,人员迁入迁出,户籍注销,人员注销等几个子系统,而每个子系统又划分为接收用户信息,实施处理,提供返回信息等等部分.v 模块化:即将几个系统分成几个模块,每个模块实现特定的功能,最终整个系统由这些模块组成。模块跟模块之间通过接口传递信息,模块最重要的特点就是独立性,模块之间还有上下层的关系,上层模块调用下层模块来实现一些功能。整个项目经过这样的模块化后,开发人员就可以开始有目的的逐个模块、逐个函数的去实现,进而完成整个项目。v 语句结构化:顺序结构、分支结构、循环结构,都
3、是常用的语句结构。三、 面向过程的编程方法v 过程分析,功能分解:面向过程方法认为每个小系统都有着明确的开始和明确的结束,开始和结束之间有着严谨的因果关系。所以如果我们要分析这个世界,并用计算机来模拟它,首要的工作是将这个过程描绘出来,把它们的因果关系都定义出来;再通过结构化的设计方法,将这些过程进行细化,形成可以控制的、范围较小的部分。通常,面向过程的分析方法是找到过程的起点,然后顺藤摸瓜,分析每一个部分,直至达到过程的终点。这个过程中的每一部分都是过程链上不可分割的一环。l 结构化分析的步骤如下: 分析当前的情况,做出反映当前物理模型的DFD; 推导出等价的逻辑模型的DFD; 设计新的逻辑
4、系统,生成和基元描述; 建立人机接口,提出可供选择的目标系统物理模型的DFD; 确定各种方案的成本和风险等级,据此对各种方案进行分析; 选择一种方案; 建立完整的需求规约。l 设计原则: 使每个模块执行一个功能(坚持功能性) 每个模块用过程语句(或函数方式等)调用其他模块与 模块间传送的参数作数据用与 模块间共用的信息(如参数等)尽量少 v 有科学家提出程序=算法+数据结构.这个公式很好地诠释了面向过程程序设计方法的核心思想-数据和算法.面向过程,都是通过函数实现的。其设计方法的重点在于如何实现细节过程,将函数与数据分开。它主要是以:主模块 + 若干子模块(mian()+子函数)的形式展开的。
5、每一个程序的功能、动作都以相应的函数方法去实现,然后再由主函数以此调用完成相应动作。面向过程的方法的另一种表述是组成程序的若干函数方法。也就是说,一个程序是由若干个函数组成的。其实本质上,面向过程的编程方法都是基于一系列处理函数的,无论是自上而下、逐步细化的思想,还是模块化、结构化的思想,他们最后的落脚点都是一系列的处理函数。所以说,面向过程的编程方法实际上就是组成程序的若干函数的实现方法。四、 面向过程编程的优缺点v 优点 : 面向过程的编程(OPP)优点是程序顺序执行,流程清晰明了。其次面向过程的性能比面向对象要高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、
6、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。所以当我们开发一个不是很复杂的程序,同时对性能方面又有比较高要求,这时候面向过程就显得十分高效了。v 缺点 : 面向过程的缺点主要体现在主控程序承担了太多的任务,各个模块都需要主控程序进行控制和调度,主控和模块之间的承担的任务不均衡。另一方面,面向过程定义的函数无法方便扩展,重用性低,没有面向对象易维护、易复用、易扩展。第三,在面向过程程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证。面向过程的方式,其思想和方法布局注重深度, 其调用
7、链形成一棵链条很长的树(纵向联系),上级节点和下级节点互为上下文,上级节点单独抽出去无法完成任何工作,越核心的功能依赖层次越低的下层实现。联系太紧密,所以很难重用,从而导致修改时的链条也很长。五、 发展情况如图所示,计算机通过数据来记录这个过程的变迁。过程中每一步都会产生、修改或读取一部分数据。每一个环节完成后,数据将顺着过程链传递到下一部分。当我们需要的最终结果在数据中被反映出来,即达到预期状态的时候,我们认为这个过程结束了。从中也可以看出,销售定单数据是这个过程的核心。为了能很好地分析这样的过程,DFD 图被广泛应用。DFD 图表达了“( 从上一步)输入数据(在这一步)功能计算(向下一步)
8、输出数据”这样一个基础单元。例如图中的“销售定单”单元,它读取客户请求,创建了销售定单数据;而“财务处理”单元则读取定购的商品信息,写入财务数据直到“物流”单元将货物送到消费者手中并将数据写入销售定单后,这个过程才宣告结束。由于数据是如此重要,因此数据的正确性和完备性对系统成功与否至关重要。为了更好地管理数据,不至于让系统运行紊乱,人们通过定义主键、外键等手段将数据之间的关系描绘出来,结构化地组织它们,利用关系理论,即数据库的三大范式来保证它们的完备性和一致性。在面向过程成为主要的软件方法之后,关系型数据库得到了极大的发展,针对数据的分析方法ER 模型也深入人心,被极为广泛地使用。然而随着需求
9、越来越复杂,系统越来越庞大,功能点越来越多,一份数据经常被多个过程共享,这些过程对同一份数据的创建和读取要求越来越趋于复杂和多样,经常出现相矛盾的数据需求,因此分析和设计也变得越来越困难。尽管有非常管用的方法,但面向过程的困难并没有从根本上解决。好方法只是使得困难暂时得以缓解。本质的问题出在认识方法上。将世界视为过程的这个方法本身蕴涵着一个前提假设,即这个过程是稳定的,这样我们才有分析的基础,所有的工作成果都依赖于对这个过程的步步分析。同时,这种步步分析的过程分析方法还导致另一个结果,即过程中的每一步都是预设好的,有着严谨的因果关系。只可惜我们这个世界从来都不是一成不变的,尤其到了信息化时代,一切都无时无刻不在发生着变化,系统所依赖的因果关系变得越来越脆弱。 面向过程已经面临了太多的困难,世界的复杂性和频繁变革已经不是面向过程可以轻易应付的了,面向对象的方法也就应运而生.但面向过程也非完全不好,还是有存在的必要.面向对象里面也包含了面向过程的方法. 在面向对象之前,我们采取的开发方法都是面向过程的编程,面向过程的编程(OPP)已经存在了几十年了,即使在面向对象的编程成为主流时,现在依然有很多人在使用。它的优点就是在逻辑不复杂的情况下很容易理解,而且运行效率远高于面向对象编写的程序。专心-专注-专业
限制150内