++01章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C01章

1.4.4对象是抽象数据类型的实现 抽象是一个系统的简化描述,它强调了系统的某些特性而忽略了其他特性。对于用户来说,所关心的是程序能做什么,而不是它的实现细节。 * 而抽象恰好可以用来对用户所关心的重要信息予以强调,而忽略不重要的信息。 * 整个程序设计语言的发展过程就是抽象层次不断提高的过程。 * 抽象数据类型在程序中是一封闭的单位。它包含的信息有: 外部可见的:处理数据的各个 操作的界面 外部不可见的:数据和操作的 实现细节 * 于是,将数据类型抽象为提供给外部世界的数据和操作集。使用了抽象数据类型描述,不再关心数据结构是什么,而仅仅关心它具有些什么功能可用。这与信息隐藏原则很符合。 * 1.6 面向对象的程序设计语言 将面向对象的概念正式作为语言成分的是Simula 67。Simula 语言在 ALGOL 60 语言的基础上发展起来,引入了类、对象、继承和共行子程序等概念。当今的面向对象程序设计的基本思想来源于 Simula 语言。 * 80年代以后,Smalltalk语言的问世标志着面向对象语言研究的开始。 Smalltalk具有一个非常好的开发环境。 * 80年代早期,AT T贝尔实验室的Bjarne Stroustrup及其研究小组将C扩展为C++——一个支持面向对象概念的C语言。当时开发C++是为了解决Simula 67语言带来的效率方面的问题。 * 面向对象的概念和方法是当前软件开发中最接近问题的一种较好方法。 * 数据封装将一组数据和与这组数据有关的操作集合封装在一起,形成一个能动的实体,称为对象。 * 用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象。 * 例 class Circle { float r; //半径 int x,y; //圆心 关于半径、圆心和圆的操作; }; * 类的概念将一组数据和这组数据有关的操作集合封装在一起,建立了一个定义良好的接口,人们只关心其使用,不关心其实现细节。这反应了抽象数据类型的思想。 * 类本身还是一组对象共同属性和操作的抽象。类代表了一般性,而该类的每一个对象代表了具体性。 * 1.2.2继承 继承是面向对象语言的另一个重要的概念。在客观世界中,存在着整体和部分的关系(a part of )、一般和特殊的关系(is a 或 a kind of ),实现了重用性和扩充性。 * A is a part of B. A is a kind of B. * 例: 人与学生的关系(继承) 点与圆(心)的关系(包含) 点与多边形(顶点)的关系 * 将一个人当成对象,对于人的定义(如名字、年龄、性别等等)和对人的操作(取名字、打印一个人的各种信息等等)已经封装在Person类中了;下面将学生当成对象,学生是一类特殊的人,基本的信息和操作已经Person中定义过了,为了避免重复定义C++允许用户将学生类Student说明为Person类的继承类。 * person student * 这样,Student类就可以不必在考虑对于人的基本信息的定义和操作了,继承机制允许学生类从人类中继承人的所有数据和操作,学生类只需要考虑学生特殊的信息的定义和对学生本身的操作即可。 * 1.2.3多态性 面向对象另外一个核心概念是多态性。所谓多态,是指一个名字(或符号)具有多种含义。 利用超载(或称为重载overload)方式实现多态性。 有函数和运算符超载。 * 函数的名字有两个作用: 1)代表了该函数的函数体(那段代码); 2)代表了该函数的功能。 * 在传统的语言中,不允许函数有同名的情况,考虑的是函数名的第一个作用;而在面向对象的程序设计语言中,如果发现多个函数的功能是一致的,尽管他们确实是不同的函数,但允许它们具有相同的函数名字,即存在同名函数。 * 对于函数重载,若函数调用(界面)与哪一个函数体(函数实现)相匹配,是在编译时确定的,称为早期匹配(或静态联编)。如果函数调用与哪一个函数体的匹配是在运行时动态进行的,称之为晚期匹配(或动态联编)。 * 一般来说,早期匹配执行速度比较快,晚期匹配提供灵活性和高度的问题抽象。 ? * 1.3 按对象方式思维 面向对象的CRC方法从以下三个方面来表述对象。 ⑴ Class name(对象取名) 对象取名实质上就是将系统需要处理的数据划分为不同性质的数据。 * ⑵ Responsibilities(责任) 每类对象只负责完成设计中的一个数

文档评论(0)

rovend + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档