java语言程序设计第二版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4、“天圆地方”是足够正确的,在人们没有见到大海之 前 “地心说”是足够正确的,在人们没有感觉到行星轨道的 复杂之前 “日心说”是足够正确的,在人们没有感觉到更大星系的 存在之前 .... 牛顿力学是足够正确的,在人们没有计算超大尺度和超小 尺度之前
结构化也是足够的,在软件开发不得不把“复用”、“构 件”摆在重要位置之前
其他声音(论面向对象和结构化 )
1、许多人一谈到结构化,就非常不屑地说,那是过了时的东 西,现在流行的是面向对象,等等. 真的是这样吗? 我认为没有,结构化的设计思想并没有消失,而是一直在顽强 的生存着,以后也会生存下去.结构化的思想和面向对象的思 想只是考虑同样一个问题的两个不同角度而已,他们本身并 没有那个好那个不好的问题,当然具体到每个系统设计人员, 就要受限制与自己所接受的教育,从而可能会有自己的判断 和喜好. 我曾经接触过几个老资格的程序员,他们在中国刚刚引进计 算机时就开始进行大规模的软件编程,他们对于系统的把握 和理解确实是非常深刻的,尽管是结构化的. 系统分析本身的最终目的,是为了真正理解系统,而采用那个 角度,用那种方法来理解系统只是一个手段问题,不是根本问 题.
(3) 每个对象都有自己的存储空间,可容纳 其他对象。
或者说,通过封装现有对象,可制作出新型 对象。所以,尽管对象的概念非常简单,但在 程序中却可达到任意高的复杂程度。
(4) 每个对象都有一种类型。
根据语法,每个对象都是某个“类”的一个 “实例”。其中,“类”(Class)是“类型” (Type)的同义词。一个类最重要的特征就是 “能将什么消息发给它?”。
2、不敢苟同,你没有意识到两者本质上的不同, 结构化方法的缺陷(或者叫硬伤)使得它逐渐被 淘汰,
3、我来打个比方,面向对象和结构化好比中医和 西医一样,只是两种不同的理论体系一样,但病人是 一个,他们本质上是不同的,但其处理的问题是一致 的.难道中医能看病,就意味着西医不能看病吗? 请问,结构化的缺陷何在?
公孙龙说,白马为非马者,言白所以名色,言马所以名形 也;色非形,形非色也。夫言色则形不当与,言形则色不 宜从,今合以为物,非也。如求白马于厩中,无有,而有 骊色之马,然不可以应有白马也。不可以应有白马,则所 求之马亡矣;亡则白马竟非马。
公孙龙的话大意是说:"马" 指的是马的形态,"白马"指的 是马的颜色,而形态不等于颜色,所以白马不是马。
实体
抽象
抽象数据类型
转换

实例化
抽象
Fra Baidu bibliotek
对象
现 实 世 界
概 念 世 界 计 算 机 世 界
白馬非馬論
公孙龙是名家的代表人物,他最有名的辩论是“白马非马” 的假说。一天,他牵一匹白马出关被阻,公孙龙便以白马 非马的命题与之辩论,守关的人辩不过他,公孙龙就牵着 马出关去了(或说,他还是不得出关)。
第二章 面向对象(OO)程序设计概念
参考书:Bruce Eckel – Thinking in Java
程序设计的演变
机器语言 汇编语言 面向过程的语言和结构化程序设计
– 程序=算法+数据结构 (C)
面向对象程序设计
– 程序=对象+消息传递 (Java,C++, C#)
抽象的进步
7、如果你说的是世界观,我同意OO和结构化没 有优劣之分,这属于哲学范畴;但我想,我们是 在讨论技术和工程问题,在这一点上,无论理论 还是实践,OO是主流,胜于结构化,也早有定论。 市场已经做出了回答。在这10年间新的软件基本 上都在用OO方法,而结构化只被限制小范围、某 些特定的应用上。
我离开大学后就再也没有接触过结构化,OO完全 可以取代它。
所有编程语言的最终目的都是提供一种“抽 象”方法
汇编语言是对基础机器的少量抽象 命令式语言(如FORTRAN,BASIC和C)
是对汇编语言的一种抽象
OOP是更高层的抽象
面向对象程序设计方法的来源
《大英百科全书》描述了人类在认识和理解 现实世界的过程中普遍运用的三个法则:
1、区分对象及其属性,例如,区分一棵树和树的 大小或它与其它对象的空间关系。 2、区分整体对象及其组成部分。例如,区分一棵 树和树枝。 3、形成并区分不同对象的类。例如,形成所有树 的类和所有石头的类,并区分它们。
8、回头看一看OO的历史,就会发现OO的出现是为了适 应软件工程的发展。随着项目规模的不断扩大,结构化已 经力不从心了。 引入OO的方法是为了将复杂的问题简单化,可以理解成 为另一种方式的自顶向下、逐步细化。分解到一定程度后 就可以采用结构化的方法去实现了。
所以面向对象与结构化不是格格不入的,而是相辅相成的。 用牛顿力学和相对论比可能不太合适,是不是可以比喻成 双脚和车子:短距离步行还可以,距离远了走起来可是要 累死了;但是要想回家还得下车来走两步;所以走路永远 不过时,开车就是比走路快!
5、老资格的结构化程序员确实是>面向对象新手, 就象算盘老手速度比计算器新手快一样,有的毛 笔老手也会写得比钢笔新手快又好。
6、知不知道并不是有了超大超小之后, 牛顿力学 就不对了. 你拿量子力学或者超弦理论来算火车什 么时候到站估计永远得不出结果来. 只有适用的才 是最好的, 没有万能药
用来打苍蝇估计苍蝇拍比原子弹更好.
面向对象程序设计方法的特征
(1) 所有东西都是对象。
可将对象想象成一种新型变量;它保存着数 据,但可要求它对自身进行操作。理论上讲, 可从要解决的问题身上提出所有概念性的组件, 然后在程序中将其表达为一个对象。
(2) 程序是一大堆对象的组合;
通过消息传递,各对象知道自己该做些什么。 为了向对象发出请求,需向那个对象“发送一 条消息”。更具体地讲,可将消息想象为一个 调用请求,它调用的是从属于目标对象的一个 子例程或函数。
(5) 同一类所有对象都能接收相同的消息。
这实际是别有含义的一种说法,大家不久便能理解。 由于类型为“圆”(Circle)的一个对象也属于类型为 “形状”(Shape)的一个对象,所以一个圆完全能接 收形状消息。这意味着可让程序代码统一指挥“形状”, 令其自动控制所有符合“形状”描述的对象,其中自然 包括“圆”。这一特性称为对象的“可替换性”,是 OOP最重要的概念之一。
相关文档
最新文档