来看冒号和他的先生们(连载7)――对象范式
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......对象范式
平易近为贵,社稷次之,君为轻 ——《孟子·经心下》
短憩以后,引号刻不容缓地问:“面向对象的范式应当是一种特别的命令式吧?”
“面向对象?”冒号咕哝着,“临时称之为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成为了大型项目的首选。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
页:
[1]