|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......
对象范式
平易近为贵,社稷次之,君为轻 ——《孟子·经心下》
短憩以后,引号刻不容缓地问:“面向对象的范式应当是一种特别的命令式吧?”
“面向对象?”冒号咕哝着,“临时称之为OO或对象式吧,既不别具一格,也不耳食之言。在回覆你的成绩之前,请先回覆我的:甚么是OOP?”
引号应对如流:“OOP是一种盘算机编程形式,它以对象作为成绩空间的基础元素,使用对象和对象间的互相感化来计划程序。所谓对象,是实践成绩中实体的笼统,具有必定的属性和功效。OOP的三个基础特征是:封装性、承继性和多态性。所谓封装性就是——”
冒号作了个停息的手势:“OOP的的基础特征信任人人早就耳熟能详了,那末依据你方才的界说,可否得出OOP必定是命令式的结论?”
引号歪头想了一阵,答道:“从界说上仿佛其实不能得出,岂非C++、Java、C#不是命令式的吗?”
冒号回覆:“固然是,但这无妨碍Clos成为OO版的Lisp,而Prolog也有很多融进OO特性的扩大,如VisualProlog、Logtalk等。OOP固然是在命令式的基本上开展起来的,但其基础头脑可泛化为:以数据为中央构造逻辑,将体系视为互相感化的对象汇合,并用承继与多态来加强重用性。这类头脑也能使用到函数式和逻辑式中,只不外对象的办法从命令式中的历程分离换成函数式中的函数和逻辑式中的断言而已。大抵说来,命令式、函数式和逻辑式相互平行,而OOP与它们正交。”
问号发问:“OOP已成为一种潮水,上堂课枚举的十二种盛行言语中只要C不是OO的,这是不是意味着OOP将要金瓯无缺?”
“严厉说来,VB(VB.NET除外)和Javascript也不是OO的,只是基于对象的(ObjectBased)。”冒号改正道,“至于OOP是不是会金瓯无缺,谜底是不是定的。起首,地道的OOP是不存在的,必需分离其他范式,只要三类最基础的范式能独当一面;其次,世上没有包治百病的万灵丹方,OOP也不破例。必要指出的是,言语和范式的盛行,与至公司撑持和贸易推进是亲切相干的。有人说OO实际上是MO(Money-Oriented),虽有过激之嫌,但有履历的股平易近都晓得,有主力运作的股票老是涨得快一些的。固然OOP能盛行,自有独到的地方,谁能说说它究竟幸亏那里?”
逗号抢答:“OOP能进步软件可重用性、可扩大性和天真性。”
冒号反问:“为何历程式编程的可重用性、可扩大性和天真性就差呢?”
感应来者不善,逗号有点发虚:“由于OOP具有信息埋没、承继和多态的特性。”
冒号其实不买帐:“起首,将可重用性、可扩大性和天真性与OOP划等号,是只见树木,不见丛林——那是一切范式和言语的配合方针。其次,以C言语为例,信息埋没可用关头字static来完成;承继可用分解(composition)来取代;多态固然坚苦些,也有变通之法。更况且这些只是手腕而非目标,只需计划公道,C程序一样具有可重用性、可扩大性和天真性,功能效力还更优胜。即便在OOP日趋流行的明天,C的占据率一直稳踞前线,很多年夜型庞大软件如操纵体系、数据库等仍以C为主,这足以证实其仍堪年夜用。”
见逗号有些哑口无言,冒号语气放缓:“请不要曲解,我并不是OOP的否决者,相反从此还要重点会商它。但我但愿人人少一点标新立异和吠形吠声,多一点自力思索和批评精力。”
稍作停留,冒号持续提问:“历程式编程与OOP在计划理念上有甚么区分?”
“历程式编程理念是重在历程,自顶向下,慢慢求精。”引号一出口就自感有些“标新立异”,见冒号正用勉励的眼光看着他,这才持续说下往,“OOP则正相反,重在数据,自底向上,慢慢完成。”
冒号首肯道:“假如把全部流程看做一颗倒长的年夜树,历程式编程自树根向下,渐渐分支,直到每片树叶,相似数学证实中的剖析法,即执果索因的逆推法;OOP则从每片树叶入手下手,渐渐兼并,直到树根,相似数学证实中的综正当,即执因索果的正推法。”
句号心心相印:“倘使把树根当作主函数,离树根越近,离用户需求也越近。假如用历程式编程,因为是逆推法,树干改动简单招致树枝响应改动,因而一旦用户需求产生变更,大概会从树根涉及到树枝乃至树叶,保护起来殊为不容易。相反OOP从树叶入手下手计划,离用户需求较远,笼统水平较高,受涉及的水平较小,因而更容易保护和重用。”
<p>
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。 |
|