登陆注册
8183300000006

第6章 5 面向对象编程

小A:“师兄,用任意一种面向对象语言实现,就是要用面向对象的编程方法去实现,对吗?”

大B:“一般编程初学者都会遇到这样的问题,碰到问题就直觉地用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程。其实这是用计算机的方式去考虑它,就好比计算器这个程序,先输入两个数和运算符号,再根据运算符号判断选择如何运算,得出结果。这样是对的。但这样的想法却使得程序只为满足实现当前的需求,而程序就不容易维护,不容易扩展,也更不容易复用。也就达不到高质量代码的要求了。”

小A:“师兄,你这样一讲我又不懂了,那怎么程序才能容易维护,容易扩展,也容易复用哩?”

大B:“我再跟你讲细点吧!顺便也举些例子,理解一点。发广告邮件,广告邮件列表存在数据库里面。倘若用C来写的话,一般会这样思考,先把邮件内容读入,然后连接数据库,循环取邮件地址,调用本机的qmail的sendmail命令发送。然后考虑用Java来实现,既然是OOP,就不能什么代码都塞到main过程里面,于是就设计了三个类:一个类是负责读取数据库,取邮件地址,调用qmail的sendmail命令发送;一个类是读邮件内容,MIME编码成HTML格式的,再加上邮件头;一个主类负责从命令读参数,处理命令行参数,调用发email的类。把一件工作按照功能划分为3个模块分别处理,每个类完成一件模块任务。仔细的分析一下,你就会发现这样的设计完全是从程序员实现程序功能的角度来设计的,或者说,设计类的时候,是自底向上的,从机器的角度到现实世界的角度来分析问题的。因此在设计的时候,就已经把程序编程实现的细节都考虑进去了,企图从底层实现程序这样的出发点来达到满足现实世界的软件需求的目标。这样的分析方法其实是不适用于Java这样面向对象的编程语言。”

小A:“为什么?”

大B:“因为,如果改用C语言,封装两个C函数,都会比Java实现起来轻松得多,逻辑上也清楚得多。”

小A:“我倒觉得面向对象的精髓在于考虑问题的思路是从现实世界的人类思维习惯出发的,只要领会了这一点,就领会了面向对象的思维方法。”

大B:“这样吧,我再举一个非常简单的例子:假使现在需要写一个网页计数器,客户访问一次页面,网页计数器加1,计数器是这样来访问的如:http://hostname/count。cgi?id=xxx 后台有一个数据库表,保存每个id(一个id对应一个被统计访问次数的页面)的计数器当前值,请求页面一次,对应id的计数器的字段加1(这里我们忽略并发更新数据库表,出现的表锁定的问题)。”

大B:如果按照一般从程序实现的角度来分析,我们会这样考虑:首先是从HTTP GET请求取到id,然后按照id查数据库表,获得某id对应的访问计数值,然后加1,更新数据库,最后向页面显示访问计数。

小A:“现在假设一个没有程序设计经验的人,要怎样来思考这个问题的呢?会提出什么样的需求呢?”

大B:“你很可能会这样想:我需要有一个计数器,这个计数器应该有这样的功能,刷新一次页面,访问量就会加1,另外最好还有一个计数器清0的功能,当然计数器如果有一个可以设为任意值的功能的话,我就可以作弊了。做为一个没有程序设计经验的人来说,他完全不会想到对数据库应该如何操作,对于HTTP变量该如何传递,他考虑问题的角度就是我有什么需求,我的业务逻辑是什么,软件应该有什么功能。”

按照这样的思路需要有一个计数器类Counter,有一个必须的和两个可选的方法:

getCount()//取计数器值方法

resetCounter()//计数器清0方法

setCount()//设计数器为相应的值方法

把Counter类完整的定义如下:

public class Counter{

public int getCount(int id){}

public void resetCounter(int id){}

public void setCount(int id,int currentCount){}

}

解决问题的框架已经有了,来看一下如何使用Counter。在count。cgi里面调用Counter来计数,程序片断如下:

//这里从HTTP环境里面取id值

……

Counter myCounter=new Counter();//获得计数器

int currentCount=myCounter。getCount(id);//从计数器中取计数

//这里向客户浏览器输出

……

程序的框架全都写好了,剩下的就是实现Counter类方法里面具体的代码了,此时才去考虑具体的程序语言实现的细节。

面向对象的思维方法其实就是我们在现实生活中习惯的思维方式,是从人类考虑问题的角度出发,把人类解决问题的思维方式逐步翻译成程序能够理解的思维方式的过程,在这个翻译的过程中,软件也就逐步被设计好了。

大B:“在运用面向对象的思维方法进行软件设计的过程中,最容易犯的错误就是开始分析的时候,就想到了程序代码实现的细节,因此封装的类完全是基于程序实现逻辑,而不是基于解决问题的业务逻辑。”

同类推荐
  • 组态软件控制技术

    组态软件控制技术

    监控组态软件是完成数据采集与过程控制的专用软件,它以计算机为基本工具,为实施数据采集、过程监控、生产控制提供了基础平台和开发环境。本书从应用角度出发,详细介绍了组态软件应用程序的开发过程。对窗口界面编辑、动画链接、实时和历史趋势、安全机制、I/O设备连接,以及生产应用等内容都做了非常详细的介绍。MCGS是优秀的监控组态软件之一,它功能强大、使用方便,可以非常容易地实现监视、控制、管理的各项功能,并可提供软、硬件的全部接口,方便、快速地进行系统集成,构成不同需求的数据采集与监控系统。本书可作为高等学校计算机应用、自动控制、电子技术、机电技术专业的教材,同时还可作为相关专业工程技术人员的自学用书。
  • 如何选购电脑

    如何选购电脑

    本书以问答的形式介绍了选购电脑的基本知识。内容包括:电脑的组成、选购电脑的技巧、主机的部件构成、主板的主要类型、CPU的性能指标等。
  • 公开时刻

    公开时刻

    本书从传播者分析,内容分析,媒介分析受众与效果分析,传播环境与传播控制分析等几大方面把汶川地震作为重大传播案例,阐释汶川地震的传播学遗产。对政府部门和新闻媒体在危机公关方面做出正面评价。
  • 学校计算机实用技术

    学校计算机实用技术

    本书由杭州市上城区教育学院编著,他们邀请了众多信息技术教育教学的一线专家,认真细致地筛选了学校计算机应用方面的常见问题,提出了解决问题的具体操作方案,旨在帮助一线教育工作者解决可能面临的种种问题,为广大教师提供便捷服务。
  • 组建家庭局域网与无线网

    组建家庭局域网与无线网

    该书是“快乐驿站”丛书之一,是一本精心为初级家庭电脑用户打造的局域网与无线网组建入门与提高的图书,同时还涉及一些办公网络的组建内容。《组建家庭局域网与无线网》以局域网和无线网的功能、设置以及实际应用为导向,用生动的实例、形象的图解和幽默的语言循序渐进地介绍了局域网和无线网的概念、产品、设计、组建、调试与维护的相关内容。
热门推荐
  • 古代茶具鉴赏及收藏

    古代茶具鉴赏及收藏

    《中国民间收藏实用全书》所涉及的鉴赏及收藏内容包括碑贴、鼻烟壶、古代茶具、古兵器、乐器、古代瓷器、古代家具、古代酒具、古代书画、玉器、古金银器、古钱币、古青铜器、古铜镜、古砚、银币、古董、钟表、古化石、画像石画像砖、甲骨、牙角器、偶像、连环画、名石、扇页、石雕、唐三彩、陶器、陶俑、铜鼓、图书、古代瓦当、文房四宝、印章、玺印、古今邮品纸币、票券、珠宝、竹刻、木雕、漆器、紫砂等,介绍了与之相关的各种知识。图书内容翔实,通俗易懂,是广大古玩鉴赏及收藏爱好者的最佳入门书籍。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 与时空精灵的万界之旅

    与时空精灵的万界之旅

    简彤在她的时空精灵的一波操作下的万界之旅……“时空之旅?”简彤有点懵。……“聂怀桑?!”简彤很惊讶。……“涂山红红!!”简彤很兴奋。…………“姒婳,快开始下一个世界吧,好期待。”简彤星星眼……
  • 妖孽王爷独宠废妃

    妖孽王爷独宠废妃

    一遭下凡,她成了王府爹不疼娘不爱的废材草包嫡女,堪称天下第一!傻女开窍,从此誓要搅得这个世界天翻地覆!庶妹刁蛮戏弄,让她自食恶果;继母算计陷害,让她搬了石头砸自己的脚;渣男欺辱,一脚踩扁,让他挥刀自宫!欺她者,必还之!一不小心,却惹了东离皇朝的闲王殿下,什么?怎么甩都甩不掉?那就欢喜冤家,收入口袋闯天涯!"
  • 朗月行

    朗月行

    六年前这样结束,果然不是真的结束。醒来之后,白冉月还是觉得,那是她这辈子做的最正确的决定,她从来不会后悔。真的,手牵手,阳光普照,真的很好。
  • 我是戴夫

    我是戴夫

    “好了好了,兄弟们,今天的直播马上就下了,我们来趁这最后的的时间玩一下植物大战僵尸好吧。”主播王磊熟练地打开植大僵,一边对着麦克风说。他经常在这个时候玩这个游戏,基本成了惯例。可是,这次他并没有注意到他的游戏的打开按键发生了一点变化。随着一瞬刺眼的闪光,刚刚点了“进入世界”按钮的王磊一下子就消失不见。……王磊再次睁开眼睛,发现周围的一切都发生了变化。“这……这不是戴夫的家吗?”
  • 冷水清水

    冷水清水

    【不喜勿喷】二十六岁的尚冷,高智商,没家世,高学历。一天,她被董事长叫回国,在总部担任总裁。总部在s市。某女欲哭无泪,为什么是我?公司人人都知道我不想回去的吧。那里有她不想再见的人,有她不想再见的地方,而且,都刚好是两个。可是,他们还是相遇了,再次见面,尚冷所隐藏的一切都被发现。司景屿,二十八岁,有家世,有智商,有一切普通人所没有的东西。他们的相遇是美好的,可美好总是短暂的。他们的结束又是刻骨铭心的,但再刻骨铭心也无法挽回。原来不明白的一切,均会揭晓。
  • 星魂曲幻想

    星魂曲幻想

    有一片大陆上,在那里的人们没有武功,没有魔法,也没有所谓的灵异现象,但他们有一种能力,这种能力可以赋予普通人所没有的。这里的人们以练此能力为尊,但也不是绝对的。总之这种能力有一个名字,它的名字叫做......
  • 四库全书精编4

    四库全书精编4

    《四库全书》可以称为中华传统文化最丰富最完备的集成之作。中国文、史、哲、理、工、医,几乎所有的学科都能够从中找到它的源头和血脉,几乎所有关于中国的新兴学科都能从这里找到它生存发展的泥土和营养。
  • 超神直播

    超神直播

    无情被甩之后,叶天无意中获得了超神直播系统,人气增长,礼物打赏,都能让他有机会获得神奇能力,利用这些能力,叶天的直播生涯会创造多少奇迹?