锋行天下

生命不息,奋斗不止

导航

 

人们从小就学习12345,头脑里充满了次序!绝大多数人都是按照次序进行思考。这种次序就是一种过程。例如,先做什么,后做什么。做的比较好的,表现做事有条理,做事很有逻辑性;做的不好的,则把过程做的歪歪扭扭,但是最后也能达到预期的结果。同样,绝大多数程序员也都是按照面向过程思维方式编程。尽管他们用了面向对象的程序设计语言,学会了对象、类,用了类,但是他们仍然用面向过程的方式来编程。

  

面向对象编程的重要意义在于程序员思维方式的转变和提升,它使得程序员可以从具体编程提升到抽象的结构,使得程序员可以编写更加通用的类,进而编写出通用的软件产品。

 

1、面向过程编程

 

面向过程编程体现了程序员的逻辑性,许多程序员的水平就体现在这里。如何设计语句的次序,如何组织函数,如何设计函数的参数,如何设计过程分支等都体现了程序员的逻辑能力。例如编写保存学生信息功能的过程:

 

1)空值处理

  我们首先要判断学生信息项是否有空值,如必填项为空,则给出提示信息。例如,学生姓名为空!
 

2)合法性检查

  然后,我们还要对各信息项的有效性进行判别,如果有无效信息则提示重新输入。例如,学生的出生日期不符合日期格式!
 

3)产生学生ID

  可以给出自然数,也可以给出有意义的编码,但是ID必须是唯一的,如不唯一则进行相应的处理。
 

4)打开数据库

  建立数据库连接,获取数据库句柄。 
 

5)组织 insert 语句

  将操作者输入的学生信息拼成一条 insert 语句。
 

6)提交数据库运行

   insert 语句提交给数据库。
 

7)操作日志

  将以上操作信息写入日志。
 

8)提示写入成功

  提示“保存成功!”,想操作者提示操作成功。
 

上面只是一个保存学生信息的例子,当然,不同的程序员可能会写出不同的过程,但是,最终的结果是,学生信息保存到数据库中。处理的内容越多,不同程序员处理的逻辑就越不同,可谓五花八门,而正是这些不同,体现了程序员的水平。但是,这种面向过程编写的程序只能用于具体的系统,却不能用于其它系统。例如,上面的程序只能用于学生信息的处理程序,而不能用于图书管理信息的处理程序。


 

2、面向对象编程

 

面向对象编程体现了程序员的抽象能力,其本质是把一个事物或多个事物看做一个抽象的对象。还是举保存学生信息功能的例子:

 

1)我们可以把保存学生信息功能看成是一个对象(这里只是举例,不一定合理),我们这里先不要管面向过程中的那些处理流程,仅仅把它当做一个对象、一个空集;

 

2)我们为这个对象设计属性。例如:输入信息、数据库连接串、数据表名、日志表名等;

 

3)我们为这个对象设计事件;

 

4)我们编写这个类;

 

5)我们在保存功能的命令按钮里调用这个类。

 

 面向对象编程思想与面向过程编程思想是不同的,前者是把学生信息抽象成输入信息,把学生信息表抽象成数据表,基本上与我们所要编写的具体学生信息无关。这种抽象使得编写的类可能用于学生信息处理、客户信息处理、员工信息处理中的信息保存功能。

 

 这里并不是说面向过程不好,因为绝大多数的程序是面向过程的,许多程序员面向过程的逻辑能力还有待提高,因此,程序员需要从基础做起,提高面向过程编程的水平。新手首先要学会面向过程编程,有经验的程序员要提高面向过程的编程水平。而体系的结构、模块的结构、功能的结构、函数的结构、控件的结构都应该用面向对象的思维进行设计。但总体上来说,从面向过程编程到面向对象编程是一个思维方式提升的过程,作为程序员应该对此有一个清醒的认识,而这一点正是优秀程序员必备的条件之一。当一个程序员能从具体的程序抽象出对象,并能把这个对象应用于其他程序,这个程序员就完成了技术水平的蜕变,跻身优秀程序员的行列了。