CG@CPPBLOG

/*=========================================*/
随笔 - 76, 文章 - 39, 评论 - 137, 引用 - 0
数据加载中……

面向过程和面向对象程序的形式

目前为止,程序的表现形式是对过程的叙述,顺序、分支、循环结构是最基本的原子形式。而面向过程的分析和设计无疑是最自然的框架结构,它将过程形式的代码段再次迭代的以过程形式组合,形成整个程序。就像将句子连成段,将段连成章,将章连成篇,将篇连成书。这也是最符合阅读者思维的形式,整个程序就像一个内含超链接的文本小说,主体上是流畅的,符合连续思维的。
 
面向对象程序不能说是颠覆性改变,它的原子表现形式仍然是顺序、分支和循环。而由于依赖于过程性系统的装载,其整体的最外层仍然是一个过程性的函数。它与面向过程在其表现形式上的不同,仅仅存在于中间层。
 
面向对象程序的表现形式是词条式的,至少是传记体的,而不是编年史。你可以想象,一部小说,作者首先把所有的故事按照角色重新归类,再分割为一个个小故事,可以想象是这样的:

——传记式:
《张三传》
     张三,秦人,少年,虬髯黑脸,为人仗义。
     逸事一:若傍晚时访之,必留宿,夜必邀相饮。三十三年春,李四自华阴来,……
《李四传》
     李四,中原人,白脸壮年书生,十六岁举秀才。
     逸事一:其人好游,某年遇张三……

——词条式:
醉酒:     张三与李四饮酒,大醉……
举秀才:   李四,十六时……
张三其人: 秦人,少年,虬髯黑脸,为人仗义……
巧遇:     三十三年,李四巧遇张三……
仗义好客: 张三好客,若傍晚时访之,必留宿,夜必邀相饮……
 
这种表现形式是某种词条式的分裂,故事被不断的片段化,一个比较好的面向对象程序一般会有大量的细粒度对象,对象的属性和方法都不多,方法都很短。虽然这种表现形式能解决一些过程性叙述的不足,但无疑过分的碎片化会带来理解上困难,传记式尚好,词条式就很难了。这就是面向对象程序在形式上出现的弱点。分析设计时,需时时脑中回想整体结构,以防偏离。而阅读维护时,需要把这些片段慢慢织起来,连成一个故事。

----------------------------------------------
将SICP的注脚240记在这里:
 
对象模型对世界的近似在于将其分割为独立的片断,函数式模型则不是沿着对象间的边界去做模块化,当“对象”之间不共享的状态远远大于它们所共享的状态时,对象模型就特别好用。这种对象观点失效的一个地方就是量子力学,在那里,将物体看作独立的粒子就会导致悖论和混乱。将对象观点与函数式观点合并可能与程序设计的关系不大,而是与基本认识论有关的论题。

 

posted on 2008-03-11 20:50 cuigang 阅读(1441) 评论(3)  编辑 收藏 引用 所属分类: 杂谈

评论

# re: 面向过程和面向对象程序的形式  回复  更多评论   

NB
2008-03-12 12:28 | hyou

# re: 面向过程和面向对象程序的形式[未登录]  回复  更多评论   

谢谢浏览
2008-03-12 20:53 | cuigang

# re: 面向过程和面向对象程序的形式  回复  更多评论   

波波分析的很是很有深度的
2008-03-14 21:56 | 大卫

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理