• 面向过程和面向对象的编程


    编写文章的中心思想就是想对程序员目前最关注的问题谈谈自己的想法。每一个回帖我都会认真看的,因此我也希望程序员可以在回帖中和我交流,可以提出自己的问题,我们彼此进行探讨。以上都是题外话,不好意思呀!

       关于写《面向过程和面向对象的编程》这个话题我很矛盾,我担心许多程序员对此话题不太感兴趣,可能他们不太懂得面向过程和面向对象编程的巨大差距,以及对编程水平的影响。

       在我整个编程生涯中,有无数的转变和变化让我铭记在心。从汇编到C语言,从文件系统到数据库,从C语言倒Dbase,C/SB/S,从程序语言倒开发平台等等。但是,让我感觉最大的、最根本的转变是从C语言转学C++。可以说这是一个革命性的转变。在当时我对C语言的运用已经如日中天,得心应手,感到只要用C语言就能完成所有应用程序的开发。但是,学了C++之后,我才恍然大悟,程序还可以用另外一种思维编写。这个转变过程极其痛苦,每个概念的接受都需要和C语言进行对比,都要不停地问这个是为什么?整整花了我几乎半年时间,而且每分每秒让你在不解,忽然懂了,忽然不懂中度过。我学习一种语言,主要是学习这个语言的构架和基本原理,也就是说要研究这个语言的由来和特点。又经过若干年后,我才真正意识到面向对象编程的重要意义。它绝对是程序员思维方式的变革和升华,它使得程序员可以从具体编程,提升到抽象的结构。使得程序员可以编写更加通用的类,进而编写通用的软件产品。

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

    一、面向过程编程 

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

    1) 空值处理

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

    2) 合法性检查

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

    3) 产生学生ID

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

    4) 打开数据库

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

    5) 组织insert 语句

    将操作者输入的学生信息,拼成一句insert语句!(实现这个功能有很多种方法)

    6) 提交数据库运行

    insert语句提交给数据库。

    7) 操作日记

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

    8) 提示写入成功

    提示“保存成功!”向操作者提示操作成功!

     这些是我很随意给出的保存学生信息的过程。当然,不同的程序员可能会写出不同的过程,但是最终的结果是,学生信息保存到数据库中。

       处理的内容越多,不同程序员处理逻辑越是不同。可谓五花八门,而正是这些不同,体现了程序员的水平。

     但是,这种面向过程的编程的程序只能用于具体的系统,却不能用于其它系统。例如,以上的程序只能用于学生信息处理程序。

    二、面向对象编程

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

    1) 我们可以把保存学生信息功能看成一个对象(这里仅是举例,不一定合理。)

        注意我们这里先不要管面向过程中的那些处理流程,仅仅把它当作一个对象,一个空集。

    2) 我们为这个对象设计设计属性

       例如,输入信息、数据库连接串、数据表名、日记表名等!

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

    处理

    4) 我们编写这个类。

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

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

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

  • 相关阅读:
    LPC2138微控制器之定时器、看门狗、VIC实例
    Expression表达式目录树动态拼接 反射获取泛型方法
    泛型委托 Func<out T>,当返回的数据是一个匿名类型的时候该怎么办
    git stash与git commit的区别
    原码,补码,反码 和 有符合,无符号 整数知识总结
    二进制的 按位与、按位或、按位异、按位取反 的简单总结
    Asp.net MVC 中的TempData对象的剖析
    对Cookie和Session的理解
    MVC中IActionFilter过滤器俄罗斯套娃的实现方式
    分布式缓存
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1733522.html
Copyright © 2020-2023  润新知