background image

系统架构设计师之路

:详解面向过程

  

1. 面向过程编程(OPP) 和面向对象编程(OOP)的关系

  关于面向过程的编程

(OPP)和面向对象的编程(OOP),给出这它们的定义的人

很多,您可以从任何资料中找到很专业的解释,但以我的经验来看,讲的相对

枯燥一点,不是很直观。除非您已经有了相当的积累,否则说起来还是比较费劲

  我是个老程序员出身,虽然现在的日常工作更多倾向了管理,但至今依然

保持编码的习惯,这句话什么意思呢?我跟大家沟通应该没有问题。无论你是在

重复我走过的路,或者已经走在了我的前面,大家都会有那么一段相同的经历,

都会在思想层面上有一种理解和默契,所以我还是会尽量按照大多数人的常规

思维写下去。

  面向过程的编程

(OPP)产生在前,面向对象的编程(OOP)产生在后,所以面

向对象的编程

(OOP)一定会继承前者的一些优点,并摒弃前者存在的一些缺点,

这是符合人类进步的自然规律。两者在各自的发展和演变过程中,也一定会相互

借鉴,互相融合,来吸收对方优点,从而出现在某些方面的趋同性,这些是必

然的结果。即使两者有更多的相似点,也不会改变它们本质上的不同,因为它们

的出发点就完全是两种截然不同的思维方式。关于两者的关系,我的观点是这样

的:面向对象编程

(OOP)在局部上一定是面向过程(OP)的,面向过程的编程

(OPP)在整体上应该借鉴面向对象(OO)的思想。这一段说的的确很空洞,而且也

一定会有引来争议,不过,我劝您还是在阅读了后面的内容之后,再来评判我

观点的正确与否。

  像

C++、C#、Java 等都是面向对象的语言,c,php(暂且这么说,因为 php4 以

后就支持

OO)都是面向过程的语言,那么是不是我用 C++写的程序一定就是面

向对象,用

c 写的程序一定就是面向过程呢?这种观点显然是没有真正吃透两

者的区别。语言永远是一种工具,前辈们每创造出来的一种语言,都是你用来实