欢迎光临

木子屋

标题: 面向过程和面向对象的编程

作者: dnawo

日期: 2010-11-08 07:00 PM

分类: 网络文摘

内容: 关于写《面向过程和面向对象的编程》这个话题我很矛盾，我担心许多程序员对此话题不太感兴趣，可能他们不太懂得面向过程和面向对象编程的巨大差距，以及对编程水平的影响。
在我整个编程生涯中，有无数的转变和变化让我铭记在心。从汇编到C语言，从文件系统到数据库，从C语言到Dbase，从C/S到B/S，从程序语言到开发平台等等。但是，让我感觉最大的、最根本的转变是从C语言转学C++。可以说这是一个革命性的转变。在当时我对C语言的运用已经如日中天，得心应手，感到只要用C语言就能完成所有应用程序的开发。但是，学了C++之后，我才恍然大悟，程序还可以用另外一种思维编写。这个转变过程极其痛苦，每个概念的接受都需要和C语言进行对比，都要不停地问这个是为什么？整整花了我几乎半年时间，而且每分每秒让你在不解，忽然懂了，忽然不懂中度过。我学习一种语言，主要是学习这个语言的构架和基本原理，也就是说要研究这个语言的由来和特点。又经过若干年后，我才真正意识到面向对象编程的重要意义。它绝对是程序员思维方式的变革和升华，它使得程序员可以从具体编程，提升到抽象的结构。使得程序员可以编写更加通用的类，进而编写通用的软件产品。
人们从小就学习1、2、3、4，头脑里排满了次序！绝大数人都是按照次序思维的。这种次序就是一种过程。例如先做什么，后做什么。做得比较好的，表现做事有条理，做事很有逻辑性。做得不好的，则把过程做得歪歪扭扭最后也能达到预期的结果。同样，绝大多数程序员都是按照面向过程思维方式去编程的。尽管他们用了面向对象的程序设计语言，学了对象、学了类，用了类，但是他们仍然用面向过程的方式编程。
一、面向过程编程
面向过程编程体现了程序员的逻辑性，许多程序员的水平就体现在这里。如何设计语句的次序，如何组织函数、如何设计函数的参数、如何设计过程分支等等都体现了程序员的逻辑能力。例如，我们编写保存学生信息功能：
1).空值处理
我们首先要判断学生信息项是否有空值，如必输项为空，则给出提示。例如，学生姓名为空！
2).合法性检查
然后，我们还要对各信息项的有效性进行判别，如果有无效信息提示重新输入。例如，如学生的出生日期不符合日期格式！
3).产生学生ID
可以给出自然数，也可以给出有意义的编码！但是ID必须是唯一的！如不唯一则进行相应的处理。
4).打开数据库
建立数据库连接，获取数据库句柄。
5).组织_insert语句
将操作者输入的学生信息，拼成一句insert语句！(实现这个功能有很多种方法)
6).提交数据库运行
将insert语句提交给数据库。
7).操作日记
将以上操作信息写入日记。
8).提示写入成功
提示“保存成功！”向操作者提示操作成功！
这些是我很随意给出的保存学生信息的过程。当然，不同的程序员可能会写出不同的过程，但是最终的结果是，学生信息保存到数据库中。
处理的内容越多，不同程序员处理逻辑越是不同。可谓五花八门，而正是这些不同，体现了程序员的水平。
但是，这种面向过程的编程的程序只能用于具体的系统，却不能用于其它系统。例如，以上的程序只能用于学生信息处理程序。
二、面向对象编程
面向对象编程体现了程序员的抽象能力，其本质是把一个事物或多个事物看作一个抽象的对象。还是举例，保存学生信息功能。
1).我们可以把保存学生信息功能看成一个对象(这里仅是举例，不一定合理。)
注意我们这里先不要管面向过程中的那些处理流程，仅仅把它当作一个对象，一个空集。
2).我们为这个对象设计设计属性
例如，输入信息、数据库连接串、数据表名、日记表名等！
3).我们为这个对象设计事件。
处理
4).我们编写这个类。
5).我们在保存功能的命令按钮里调用这个类
用面向对象编程思想与面向过程编程是不同的，它把学生信息抽象成输入信息，把学生信息表抽象成数据表。基本上与我们所要编写的具体学生信息无关。这种抽象使得编写的类，有可能用于学生信息处理、客户信息处理、员工信息处理、人口信息处理中的信息保存功能。。。
我并不是说面向过程不好，因为，绝大多数程序是面向过程的，许多程序员面向过程的逻辑性能力还有待提高，因此，程序员还需要从基础做起，提高面向过程编程的水平；以我的经验和体会，能够把面向过程的程序编好也不是很容易的事！新手首先要学会面向过程编程，有经验的程序员要提高面向过程的编程的水平。而系统的结构、模块的结构、功能的结构、函数的结构、控件的结构都应该用面向对象的思维进行设计。但是总体上来说，从面向过程编程到面向对象编程是个思维方式提升的过程，作为程序员应该对此有一个清醒的认识，而这一点正是优秀程序员必需具备的条件之一。当一个程序员能从具体的程序抽象出对象，并能把这个对象用于其它程序，则这个程序员完成了技术水平的蜕变，跻身于优秀程序员行列了。

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.402 ms

返回

标题: 面向过程和面向对象的编程

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.402 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.496 ms

返回