快速业务通道

冒号和他的学生们(连载7)——对象范式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
用鼓励的目光看着他,这才继续说下去,“OOP则正相反,重在数据,自底向上,逐步实现。”

冒号首肯道:“如果把整个流程看作一颗倒长的大树,过程式编程自树根向下,逐渐分支,直到每片树叶,类似数学证明中的分析法,即执果索因的逆推法;OOP则从每片树叶开始,逐渐合并,直到树根,类似数学证明中的综合法,即执因索果的正推法。”

句号心领神会:“倘若把树根看成主函数,离树根越近,离用户需求也越近。如果用过程式编程,由于是逆推法,树干改变容易导致树枝相应改变,因此一旦用户需求发生变化,可能会从树根波及到树枝甚至树叶,维护起来殊为不易。相反OOP从树叶开始设计,离用户需求较远,抽象程度较高,受波及的程度较小,因此更易维护和重用。”

冒号和他的学生们(连载7)——对象范式(2)

时间:2011-06-29 BlogJava 郑晖

冒号拊掌赞道:“好极了!”

问号不解:“您刚才不还说C程序同样具有可重用性吗?”

冒号微微一笑:“数学中分析法与综合法往往是结合起来使用的,过程式编程与OOP也是如此,只不过各有偏重罢了。句号的一番话虽不无道理,但也授OOP的反对者以口实:OOP鼓吹的可重用性来自‘自底向上’的设计模式,而这种模式并非OOP的专利。其实软件设计的最重要的并不是语言,也不是范式,而是抽象思维和前瞻思维。”

叹号不甘寂寞,插言道:“OOP以对象为基本模块单位,而对象是现实中具体事物和抽象概念的模拟,这使得编程设计更自然更人性化。”

“深合吾意!”冒号挥动着右手,“尽管OOP最大的卖点是其高度的可重用性,相比其他范式却并不具明显优势。但它更接近人类的认知模式,编程者更容易也更乐于用这种方式编程,这是它深入人心的一个重要原因。比较一下两种用法:牛.吃(草)与吃(牛,草),哪种更接近人类思维?”

有人在下面嘀咕:“如果把牛换成狗,那么一个是狗吃屎,一个是吃狗屎。”

全班捧腹。

冒号也忍不住笑了:“OOP人性化的另一表现是其接口简洁易记。看看Win32 API、Unix API等之类操作系统接口或OCI之类的数据库接口,函数的参数动辄七八个甚至上十个,函数名和数据结构成员也多冗长晦涩,既难记又易错。相比之下,相应的Java的API显然平易近人得多。”

问号刨根问底:“为什么C的API不能象Java的那么简洁呢?”

冒号释疑:“单纯这么比较其实对C并不公平,因为Java的API虽然简洁易用,但功能上与相应C的API并不等同,换句话说,Java把接口粗粒度化了。”

“接口粗粒度化?”引号质疑道,“就是把一些函数包装起来吧?我们也可以用C将操作系统、数据库之类的API再包装一下。”

“事实上许多软件公司都曾这样做过。”冒号颔首作答,“但C函数不像Java对象,本身没有状态,只有依靠参数传递或外部变量来维持相关函数之间的联系,包装后的接口肯定不如Java简洁,但应该比Java高效。说白了,OOP就是将相关的函数用数据粘合,重新包装后再贴上对象的标签。从这种角度上看,与其说OOP更具重用性,不如说更具易用性。”

叹号狐疑道:“OOP并不更具重用性?这可是它的金字招牌啊!”

冒号冷哼一声:“不要被金字招牌晃晕了眼,我来问你:是收音机、电视机之类的电器产品更具重用性呢,还是与电阻、电容之类的电器元件更具重用性?”

“当然是电器元件啦。”叹号冲口而出。

冒号因势利导:“每个电器元件具备单一的功能,正如过程式中的函数;每个电器产品是对多个相互关联的电器元件的封装,正如OOP中的对象。同样的电器元件可用于不同的电器产品

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号