1.1.3 编程(www.cppentry.com)思想的转变
经过前面章节的学习,读者知道C++(www.cppentry.com)是一种面向对象的程序设计语言,它体现的是面向对象的编程(www.cppentry.com)思想。事实上,与之相对应的程序设计领域有一种面向过程的编程(www.cppentry.com)思想,读者在具体学习C++(www.cppentry.com)之前应先了解这两种编程(www.cppentry.com)思想。
简单地说,面向过程是一种以事件为中心的编程(www.cppentry.com)思想,而面向对象是一种以事物为中心的编程(www.cppentry.com)思想。传统的面向过程开发思想主要是通过功能分解的方式来实现,从系统高层入手,自顶向下,不断把复杂的处理分解为子过程。这样一层一层地分解下去,直到仅剩下若干个容易实现的子过程为止,然后用相应的工具来描述底层的各个过程。因此,面向过程的开发方法实际上建立在底层的各个过程上,如图1.4所示。
|
| 图1.4 面向过程的软件结构 |
由于目前大型的软件系统面临的问题是:需求模糊或需求变化较大,而传统的面向过程开发很难适应这种情况,从而导致软件开发周期较长、成本较高。因此,在进行大型的软件设计时,面向过程的软件开发方法存在着以下几个问题:
重用性差。
难以维护。
难以适应需求变化较大的情形。
在面向过程的开发思想中,用户需求的变化大部分是针对功能的。这种变化对于基于过程的设计是灾难性的,一旦中间某个过程出现变更,后续过程都必须做变更。这种变更的结果是软件质量得不到保障,软件也无法按时交付使用。用这种方法设计出来的系统结构常常是不稳定的,用户需求的变化往往造成系统结构的较大变化,从而需要花费很大代价。
提示:在进行面向过程的软件开发时,如果其底层的过程发生变化,将影响到上层,原因就是其结构的层次性。
面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代至今软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。例如,数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术及人工智能等领域。
面向对象认为世界是由各种对象组成的,任何事物都是对象,复杂的对象可由较简单的对象以某种方式组成。由于面向对象的这种思想符合人们认识世界的观念,因此,面向对象程序设计一提出,就得到了广泛的支持,至今已应用到各个领域。
面向对象的程序设计方法是以"对象"为中心进行分析和设计的,使这些对象形成了解决目标问题的基本构件,即解决从"做什么"到"怎么做"的问题。其解决过程从总体上说是采用自低向上的方法,先将问题空间划分为一系列对象的集合,再将对象集合进行分类抽象,一些具有相同属性行为的对象被抽象为一个类,类还可抽象分为子类、超类(超类是子类的抽象)。采用继承来建立这些类之间的联系,形成结构层次。如图1.5为一个类和对象的关系示意图。
|
| 图1.5 面对对象思想 |
提示:采用面向对象程序设计方法(Object Oriented Programming,OOP)进行程序设计,其本质上就是不断设计新的类和创建对象的过程。
这两种编程(www.cppentry.com)思想可以通过公式来表示,面向过程的编程(www.cppentry.com)思想为:程序=算法+数据;面向对象编程(www.cppentry.com)思想为:程序=对象+事件。