首先说一下结构化程序设计,C语言使用的就是结构化程序设计。
结构化程序设计:程序 = 数据结构 + 算法
程序由全局变量和众多互相调用的函数组成。算法以函数的形式实现,用于对数据结构进行操作。
结构化程序设计的不足在于:
1.结构化程序设计中,函数和其所操作的数据结构没有直接的联系。
2.随着程序规模的增加,程序会变得越来越难以理解,很难一下子看出以下东西:
· 某个数据结构到底有哪些函数可以对它进行操作?
· 某个函数到底是用来操作哪些数据结构的?
· 任何两个函数之间到底存在怎样的调用关系?
3.结构化程序设计没有“封装”和“隐藏”的概念。要访问某个数据结构中的某个变量,就可以直接访问,那么当该变量定义有所改动的时候,就要把所有访问该变量的语句找出来修改,十分不利于程序的维护和扩充。
4.难以差错,当某个数据结构的值不正确时,难以找到到底是哪个函数所导致的。
5.不利于代码重用,在编写某个程序时,发现其需要的某项功能在现有的某个程序里已经有了相同或相似的实现,那么自然希望能够将部分代码抽取出来,在新程序中使用。而在结构化程序设计中,随着程序规模的增大,由于程序大量函数、变量之间的关系错综复杂,要抽取这部分代码会变得十分困难。
总之,结构化的程序,在规模庞大时,会变得难以理解,难以扩充(增加新的功能),难以差错,难以重用,十分的不方便。
软件业的目标是更快、更正确、更经济地建立软件。要更高效地实现函数的复用,更清晰地实现变量和函数之间的关系,使程序更易于理解、修改和维护。
而面向对象程序设计可以很好地做到上述的内容。
面向对象的程序 = 类 + 类 + ··· + 类
程序设计的过程就是设计类和类间关系的过程。
面向对象的程序设计方法是:
· 将某类客观事物的共同特点(属性)归纳出来,形成一个数据结构(可以用多个变量描述事物的属性);
· 将这些事物所能进行的行为归纳出来,形成一个函数,这些函数用来操作数据结构(这一步叫作“抽象”)。
然后,通过一种语法形式,将数据结构和操作数据结构的函数“捆绑”在一起,形成一个“类”,从而使数据结构和操作数据结构的算法呈现出显而易见的紧密关系,这就是“封装”。
面向对象程序设计的四个基本特点是:抽象、封装、继承、多态。