快速业务通道

冒号课堂§2.3:对象范式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
灵活性,性能效率还更优越。即使在OOP日益风行的今天,C的占有率始终稳踞前列,许多大型复杂软件如操作系统、数据库等仍以C为主,这足以证明其仍堪大用。”

冒号课堂§2.3:对象范式(2)

时间:2011-06-25 BlogJava xyz98

见逗号有些理屈词穷,冒号语气放缓:“请不要误解,我并非OOP的反对者,相反今后还要重点讨论它。但我希望大家少一点照本宣科和人云亦云,多一点独立思考,甚至不妨标新立异。”

稍作停顿,冒号继续发问:“过程式编程与OOP在设计理念上有什么区别?”

“过程式编程的理念是重在过程,自顶向下、逐步求精[4]。”引号一出口就自感有些“照本宣科”,见冒号正用鼓励的目光看着他,这才继续说下去,“OOP则正相反,重在数据,自底向上、逐步实现。”

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

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

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

问号不解:“您刚才不还说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高效。说白了

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号