- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 面向对象(OO)程序设计概念 程序设计的演变 机器语言 汇编语言 面向过程的语言和结构化程序设计 程序=算法+数据结构 (C) 面向对象程序设计 程序=对象+消息传递 (Java,C++,C#) 抽象的进步 所有编程语言的最终目的都是提供一种“抽象”方法 汇编语言是对基础机器的少量抽象 命令式语言(如FORTRAN,BASIC和C)是对汇编语言的一种抽象 OOP是更高层的抽象 面向对象程序设计方法的来源 《大英百科全书》描述了人类在认识和理解现实世界的过程中普遍运用的三个法则: 1、区分对象及其属性,例如,区分一棵树和树的大小或它与其它对象的空间关系。2、区分整体对象及其组成部分。例如,区分一棵树和树枝。3、形成并区分不同对象的类。例如,形成所有树的类和所有石头的类,并区分它们。 面向对象程序设计方法的特征 (1) 所有东西都是对象。 可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。理论上讲,可从要解决的问题身上提出所有概念性的组件,然后在程序中将其表达为一个对象。 (2) 程序是一大堆对象的组合; 通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,需向那个对象“发送一条消息”。更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数。 (3) 每个对象都有自己的存储空间,可容纳其他对象。 或者说,通过封装现有对象,可制作出新型对象。所以,尽管对象的概念非常简单,但在程序中却可达到任意高的复杂程度。 (4) 每个对象都有一种类型。 根据语法,每个对象都是某个“类”的一个“实例”。其中,“类”(Class)是“类型”(Type)的同义词。一个类最重要的特征就是“能将什么消息发给它?”。 (5) 同一类所有对象都能接收相同的消息。 这实际是别有含义的一种说法,大家不久便能理解。由于类型为“圆”(Circle)的一个对象也属于类型为“形状”(Shape)的一个对象,所以一个圆完全能接收形状消息。这意味着可让程序代码统一指挥“形状”,令其自动控制所有符合“形状”描述的对象,其中自然包括“圆”。这一特性称为对象的“可替换性”,是OOP最重要的概念之一。 白馬非馬論 公孙龙是名家的代表人物,他最有名的辩论是“白马非马”的假说。一天,他牵一匹白马出关被阻,公孙龙便以白马非马的命题与之辩论,守关的人辩不过他,公孙龙就牵着马出关去了(或说,他还是不得出关)。 公孙龙说,白马为非马者,言白所以名色,言马所以名形也;色非形,形非色也。夫言色则形不当与,言形则色不宜从,今合以为物,非也。如求白马于厩中,无有,而有骊色之马,然不可以应有白马也。不可以应有白马,则所求之马亡矣;亡则白马竟非马。 公孙龙的话大意是说:马 指的是马的形态,白马指的是马的颜色,而形态不等于颜色,所以白马不是马。 其他声音(论面向对象和结构化 ) 1、许多人一谈到结构化,就非常不屑地说,那是过了时的东西,现在流行的是面向对象,等等.真的是这样吗?我认为没有,结构化的设计思想并没有消失,而是一直在顽强的生存着,以后也会生存下去.结构化的思想和面向对象的思想只是考虑同样一个问题的两个不同角度而已,他们本身并没有那个好那个不好的问题,当然具体到每个系统设计人员,就要受限制与自己所接受的教育,从而可能会有自己的判断和喜好.我曾经接触过几个老资格的程序员,他们在中国刚刚引进计算机时就开始进行大规模的软件编程,他们对于系统的把握和理解确实是非常深刻的,尽管是结构化的.系统分析本身的最终目的,是为了真正理解系统,而采用那个角度,用那种方法来理解系统只是一个手段问题,不是根本问题. 2、不敢苟同,你没有意识到两者本质上的不同,结构化方法的缺陷(或者叫硬伤)使得它逐渐被淘汰, 3、我来打个比方,面向对象和结构化好比中医和西医一样,只是两种不同的理论体系一样,但病人是一个,他们本质上是不同的,但其处理的问题是一致的.难道中医能看病,就意味着西医不能看病吗?请问,结构化的缺陷何在? 4、“天圆地方”是足够正确的,在人们没有见到大海之前“地心说”是足够正确的,在人们没有感觉到行星轨道的复杂之前“日心说”是足够正确的,在人们没有感觉到更大星系的存在之前....牛顿力学是足够正确的,在人们没有计算超大尺度和超小尺度之前结构化也是足够的,在软件开发不得不把“复用”、“构件”摆在重要位置之前 5、老资格的结构化程序员确实是面向对象新手,就象算盘老手速度比计算器新手快一样,有的毛笔老手也会写得比钢笔新手快又好。 6、知不知道并不是
原创力文档


文档评论(0)