当前位置:
文档之家› java语言程序设计(第二版)
java语言程序设计(第二版)
整理ppt
实体
抽象
抽象数据类型
转换
类
实例化
抽象
对象
现 实 世 界
概 念 世 界 计 算 机 世 界
白馬非馬論
公孙龙是名家的代表人物,他最有名的辩论是“白马非马” 的假说。一天,他牵一匹白马出关被阻,公孙龙便以白马 非马的命题与之辩论,守关的人辩不过他,公孙龙就牵着 马出关去了(或说,他还是不得出关)。
抽象的进步
所有编程语言的最终目的都是提供一种“抽 象”方法
汇编语言是对基础机器的少量抽象 命令式语言(如FORTRAN,BASIC和C)
是对汇编语言的一种抽象
OOP是更高层的抽象
整理ppt
面向对象程序设计方法的来源
《大英百科全书》描述了人类在认识和理解 现实世界的过程中普遍运用的三个法则:
整理ppt
(2) 程序是一大堆对象的组合;
通过消息传递,各对象知道自己该做些什么。 为了向对象发出请求,需向那个对象“发送一 条消息”。更具体地讲,可将消息想象为一个 调用请求,它调用的是从属于目标对象的一个 子例程或函数。
整理ppt
(3) 每个对象都有自己的存储空间,可容纳 其他对象。
或者说,通过封装现有对象,可制作出新型 对象。所以,尽管对象的概念非常简单,但在 程序中却可达到任意高的复杂程度。
第二章 面向对象(OO)程序设计概念
参考书:Bruce Eckel – Thinking in Java
整理ppt
程序设计的演变
机器语言 汇编语言 面向过程的语言和结构化程序设计
– 程序=算法+数据结构 (C)
面向对象程序设计
– 程序=对象+消息传递 (Java,C++, C#)
整理ppt
整理ppt
5、老资格的结构化程序员确实是>ቤተ መጻሕፍቲ ባይዱ向对象新手, 就象算盘老手速度比计算器新手快一样,有的毛 笔老手也会写得比钢笔新手快又好。
整理ppt
6、知不知道并不是有了超大超小之后, 牛顿力学 就不对了. 你拿量子力学或者超弦理论来算火车什 么时候到站估计永远得不出结果来. 只有适用的才 是最好的, 没有万能药 用来打苍蝇估计苍蝇拍比原子弹更好.
整理ppt
4、“天圆地方”是足够正确的,在人们没有见到大海之 前 “地心说”是足够正确的,在人们没有感觉到行星轨道的 复杂之前 “日心说”是足够正确的,在人们没有感觉到更大星系的 存在之前 .... 牛顿力学是足够正确的,在人们没有计算超大尺度和超小 尺度之前
结构化也是足够的,在软件开发不得不把“复用”、“构 件”摆在重要位置之前
整理ppt
其他声音(论面向对象和结构化 )
1、许多人一谈到结构化,就非常不屑地说,那是过了时的东
西,现在流行的是面向对象,等等.
真的是这样吗?
我认为没有,结构化的设计思想并没有消失,而是一直在顽强
的生存着,以后也会生存下去.结构化的思想和面向对象的思
想只是考虑同样一个问题的两个不同角度而已,他们本身并
整理ppt
(4) 每个对象都有一种类型。
根据语法,每个对象都是某个“类”的一个 “实例”。其中,“类”(Class)是“类型” (Type)的同义词。一个类最重要的特征就是 “能将什么消息发给它?”。
整理ppt
(5) 同一类所有对象都能接收相同的消息。
这实际是别有含义的一种说法,大家不久便能理解。 由于类型为“圆”(Circle)的一个对象也属于类型为 “形状”(Shape)的一个对象,所以一个圆完全能接 收形状消息。这意味着可让程序代码统一指挥“形状”, 令其自动控制所有符合“形状”描述的对象,其中自然 包括“圆”。这一特性称为对象的“可替换性”,是 OOP最重要的概念之一。
公孙龙说,白马为非马者,言白所以名色,言马所以名形 也;色非形,形非色也。夫言色则形不当与,言形则色不 宜从,今合以为物,非也。如求白马于厩中,无有,而有 骊色之马,然不可以应有白马也。不可以应有白马,则所 求之马亡矣;亡则白马竟非马。
公孙龙的话大意是说:"马" 指的是马的形态,"白马"指的 是马的颜色,而形态不等于颜色,所以白马不是马。
角度,用那种方法来理解系统只是一个手段问题,不是根本问
题.
整理ppt
2、不敢苟同,你没有意识到两者本质上的不同, 结构化方法的缺陷(或者叫硬伤)使得它逐渐被 淘汰,
整理ppt
3、我来打个比方,面向对象和结构化好比中医和 西医一样,只是两种不同的理论体系一样,但病人是 一个,他们本质上是不同的,但其处理的问题是一致 的.难道中医能看病,就意味着西医不能看病吗? 请问,结构化的缺陷何在?
没有那个好那个不好的问题,当然具体到每个系统设计人员,
就要受限制与自己所接受的教育,从而可能会有自己的判断
和喜好.
我曾经接触过几个老资格的程序员,他们在中国刚刚引进计
算机时就开始进行大规模的软件编程,他们对于系统的把握
和理解确实是非常深刻的,尽管是结构化的.
系统分析本身的最终目的,是为了真正理解系统,而采用那个
1、区分对象及其属性,例如,区分一棵树和树的 大小或它与其它对象的空间关系。 2、区分整体对象及其组成部分。例如,区分一棵 树和树枝。 3、形成并区分不同对象的类。例如,形成所有树 的类和所有石头的类,并区分它们。
整理ppt
面向对象程序设计方法的特征
(1) 所有东西都是对象。
可将对象想象成一种新型变量;它保存着数 据,但可要求它对自身进行操作。理论上讲, 可从要解决的问题身上提出所有概念性的组件, 然后在程序中将其表达为一个对象。
整理ppt
7、如果你说的是世界观,我同意OO和结构化没 有优劣之分,这属于哲学范畴;但我想,我们是 在讨论技术和工程问题,在这一点上,无论理论 还是实践,OO是主流,胜于结构化,也早有定论。 市场已经做出了回答。在这10年间新的软件基本 上都在用OO方法,而结构化只被限制小范围、某 些特定的应用上。
我离开大学后就再也没有接触过结构化,OO完全 可以取代它。
整理ppt
8、回头看一看OO的历史,就会发现OO的出现是为了适 应软件工程的发展。随着项目规模的不断扩大,结构化已 经力不从心了。 引入OO的方法是为了将复杂的问题简单化,可以理解成 为另一种方式的自顶向下、逐步细化。分解到一定程度后 就可以采用结构化的方法去实现了。 所以面向对象与结构化不是格格不入的,而是相辅相成的。 用牛顿力学和相对论比可能不太合适,是不是可以比喻成 双脚和车子:短距离步行还可以,距离远了走起来可是要 累死了;但是要想回家还得下车来走两步;所以走路永远 不过时,开车就是比走路快!