- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构-第二章抽象数据类型和C类
第二章 抽象数据类型和C++类 ? 抽象数据类型(Abstract Data Type,ADT)是用户在数据类型基础上定义和实现的数据类型。一种抽象数据类型定义了一种新的数据元素集合和该数据元素集合上所允许的操作集合。抽象数据类型在更高一级的抽象程度上实现了信息的隐藏和封装。C++中类的定义体现了抽象数据类型的思想。C++中对于面向对象程序设计的支持,核心部分就是类的定义。 2.1 抽象数据类型 ? 2.1.1 从数据类型到抽象数据类型 数据类型是一组性质相同的值的集合以及定义于这个集合上的一组操作的总称。 在程序设计语言中,它是数据结构的实现。 以C语言为例,它的基本数据类型是字符型、整型、浮点型和双精度型,分别以保留字char、int、float和double标识。 此外还有一种特殊的基本类型,称之为无值,即没有值,以保留字void标识。 数据类型规定了其值的集合中元素的取值范围和对这些元素所能采用的操作。 例如,整型所定义数据集合中元素可取的值是机器所能表示的最小负整数和最大正整数之间的任何一个整数。可用的操作有单目运算符+、—,双目运算符+、—、*、/、%,关系运算符、=、、=、==、!=和赋值运算符=等。 在程序设计语言如C中,除了基本数据类型以外,还提供了一些定义数组、结构、文件等组合数据类型的规则。 讨论抽象数据类型。 所谓抽象,就是抽取问题本质的东西而忽略非本质的细节。 抽象是与具体相对应的。一个人名是抽象,它代表某人的一切属性,包括身高,年龄,体重,文化程度等。 抽象是具体事物描述的一个概括。 抽象数据类型是用户自己定义和实现的数据类型。它类似于在计算机机器语言的位、字节和字的基础上引入字符、整数、浮点数和双精度数等数据类型这样一种方法。 计算机是使用二进制定点数和浮点数来实现数据的存储和运算的。从计算机硬件系统的角度看,计算机能处理的数据类型只包括位、字节和字。 高级程序设计语言中引入了字符、整数、浮点数、双精度数。编程者可以直接使用“A”,“57”,“1.3E10”等数据表示,而不必使用它们的二进制表示。 编译程序会将这些数据值转换成二进制码。这些数值是二进制数据的抽象。 一个抽象数据类型定义了一种新的数据元素集合和数据元素集合上所允许的操作集合。 在高级程序设计语言中,由基本数据类型可以定义出更高一级的抽象数据类型,如各种表、队列、图甚至窗口、管理器等。 我们可以以队列来理解抽象数据类型。 一个队列由若干个元素组成的一个序列以及这个序列上的相关操作所构成。 其操作遵循的是“先到先服务”的原则。 新的元素进队列:加入在队列的尾部。 元素出队列时,总是取出队列头的元素。 队列中的元素可以是各种不同类型的对象。它们可以是整数,也可以是字符,也可以是字符串,甚至可以是关于一个学生的记录 无论是由什么对象组成队列,都不影响我们对“队列”本质的理解。 可以把队列看成是一个抽象数据类型。 这种数据类型的层次使程序设计者可以从抽象的概念出发,从整体上考虑然后自顶向下,逐条展开和具体化,直至获得最后的结果。 抽象数据类型与具体应用无关,这可使编程者把注意力集中在数据及其操作的理想模型上。 2.1.2 封装和信息隐藏 当一个技术员要安装一台电脑时,他将各个设备组装起来。 当他想要一个声卡时,不需要用原始的集成电路芯片和材料去制作一个声卡,而是来到电脑设备商店购买一个他所需要的某种功能的声卡。 技术员关心的是声卡的功能,并不关心声卡内部的工作原理。 声卡是自成一体的,这种自成一体性称为封装性。 无需知道封装部件内部是如何工作就能使用的思想称为数据隐藏。 声卡的所有属性都封装在声卡中,不会扩展到声卡之外。声卡的数据隐藏在声卡的电路板上。技术员无需知道声卡的工作原理就能有效地使用它。 现在来讨论抽象数据类型中的封装和信息隐藏 抽象数据类型的特征是使用和实现分离,实行封装和信息隐藏。 在设计抽象数据类型时,把类型的声明与其实现分离开来。因为每种抽象数据类型要有确切的数据元素集合和所允许的操作集合的定义。抽象数据类型定义了需要包含的数据信息,并根据功能确定了公共界面的服务。 一方面使用者是依据这些定义使用这些抽象数据类型的,即通过公共界面中的服务对该抽象数据类型进行操作的。 另一方面,抽象数据类型的设计者依据这些定义设计该抽象数据类型及各种操作的具体实现,抽象数据类型的物理实现作为私有部分封装在其实现模块内。 使用者不能看到,也不能直接对该类型所存储的数据进行操作,而只能通过界面中的服务来访问这些数据。 这样,严格区分了抽象数据类型的两个不同的视图。 从使用者的角度来看,只要
您可能关注的文档
最近下载
- 《LST1203-2002-粮情测控系统》.pdf VIP
- T_SQIA 066-2024 植物性农产品混合样品中389 种农药残留量的快速测定 高效液相色谱-串联质谱法.docx VIP
- 汽车橡胶衬套外管设计规范.docx VIP
- 护理人员中医技术使用手册.pdf VIP
- 2025年村道生命防护工程监理大纲.docx
- p e t父母效能训练.pdf VIP
- 第八届管理案例精英赛PPT作品2.pdf VIP
- 2024年安全工程师《安全生产法规》三色速记手册.pdf VIP
- 水利建设项目贷款能力测算暂行规定(水规计[2003]163号).doc VIP
- GBT709—2019热轧钢板和钢带的尺寸、外形、重量及允许偏差.docx VIP
文档评论(0)