文档详情

C++ 面向对象程序设计思想.ppt

发布:2017-11-24约2.49万字共82页下载文档
文本预览下载声明
第二章 面向对象程序设计思想 面向对象程序设计的思想(OOP)之所以流行,是因为它是一种先进的、新颖的程序设计思想,这种设计的思想十分接近现实世界的实体的行为,更接近人的思维。利用OOP进行程序设计,可以提高编程效率,减少软件维护的开销。 OOP与以前的程序设计思想有些不一样,在理解上有一些难点,因此本章是学习C++的难点。 § 2.1 面向过程程序设计的基本思想 传统的程序设计方法是面向过程程序设计方法,面向过程程序设计的步骤为: 对具体应用问题进行详细的功能分析,然后将问题分解成若干个可实现的功能模块; 根据功能块的功能来设计一系列与功能相适宜的数据,即设计“数据结构”; 编写一些过程或函数实现对这些数据所进行的操作; 最终的应用程序就是由这些过程或函数以及数据结构所组成。 下面,我们举一个实例来进一步讨论面向过程的程序设计方法。 考虑一个银行系统。该系统允许顾客开设不同类型的银行账户,其中包括现金账户、支票账户和贷款账户,同时允许顾客存款、取款和转账。 根据面向过程的思想,首先将银行系统进行功能分析,然后分解成三个模块分别负责存款、取款和转账三项工作。假设这三个过程是 MakeDeposit、WithDraw和Transfer。 第二步就是对客户建立一个数据结构: struct account { char name; /*姓名*/ unsigned long accounted; / *账号* / float balance; / *余额* / float interestYTD; /*年利息* / char accountType; /*账户类型(现金、支票和贷款) * / } 第三步就是对所需要的操作进行代码编制。 void Deposit( float amount); { … … } float WithDraw(float amount) ; { … … } void Transfer(float amount , unsigned long BankAccount); { … … } 面向过程程序设计的特点: 面向过程程序设计的显著特点就是数据结构和数据处理过程处于分离状态,这会带来很多弊病: 一、和现实需求不吻合: 任何一个现实实体(对象)应该都具有自己的职能, 比如飞机可以飞行,银行可以存款、取款;食堂应该可以卖饭等,而这些功能与具体的客观实体(对象)是密不可分的。 面向过程的程序设计方法就将对象分成了两部分:一部分就是“数据”,表示了一个对象的属性;另外一部分就是“过程或函数”,表示了对象具有的功能。这种分离显然会带来许多的弊病。比如: 顾客与他们的银行帐户有没有一定的联系。因为此时顾客对计算机来说,只不过是一串字符或数字,它根本不知道那个数字代表银行帐户,更不用说哪个帐户是谁的,帐户的内容是什么。这显然和实际的情况不符合的。 这说明面向过程程序设计中,无论是飞机或银行 在计算机中都是一些类似的数字,即一个对象进入计算机后全部程序员无条件的分解成一堆数据,然后通过程序员编制的一个叫“程序”的东西进行重建恢复。 另外考虑数据结构发生改变会产生什么样的结果: 比如Account_type数据项,原来只有现金、支票和贷款三种取值,程序只能识别这三种取值。由于帐户类型的不同,编写存款等过程时,将以不同的操作代码与之对应,即对于现金、支票和贷款这三种不同类型的帐户,其取款过程都是不同的。 如果要增加一种帐户类型“退休帐户”,原来的程序肯定会出错。因为原来的程序只考虑了以上三种帐户的情况,也就是说每增加一种类型的帐户就必须修改重新修改程序代码,可见其维护成本是相当大的。 以上简单地分析了面向过程在程序的直观性和维护性方面的缺陷。 面向过程程序设计方法,把问题被着作一系列将被完成的任务,如读、计算和打印等,许多函数用于完成这些任务。问题的焦点集中于函数。下图显示了一个典型的面向过程的程序结构。 OOP 设计方法的主要出发点是把数据看作程序开发中的基本元素,并且不允许它在系统中自由流动,将数据和操作这些数据的函数紧紧结合在
显示全部
相似文档