构造数据抽象.PDF

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造数据抽象

2. 构造数据抽象(1) 本章关注数据抽象,这一节讨论 数据抽象的意义 建立数据抽象 序对:Scheme 语言的基本组合结构 复杂的数据,层次性数据 表和表操作 表映射和树映射 把序列用作程序模块之间的接口 程序设计技术和方法 裘宗燕,2014-3-13 -1- 数据抽象的意义 前面讨论过程时只考虑简单的数据 解决复杂问题,处理和模拟复杂现象的时候,常需要构造和处理复 杂的计算对象 第二章关注具有复杂结构的数据的计算,讨论 构造复合数据对象(通过数据的组合) 处理复合数据对象 与构造复合过程类似,构造复合数据也能 提高编程的概念层次(可能在比基本数据更高的层面上工作) 提高设计的模块性(基于复合数据来组织程序,很重要) 增强语言的表达力(增加了“新”数据类型) 为处理计算问题提供更多手段和方法 下面用一个简单问题讨论有关情况 程序设计技术和方法 裘宗燕,2014-3-13 -2- 有理数计算 假设要实现过程add-rat,计算两个有理数之和。在基本数据层,一个 有理数可以看作两个整数。可以考虑实现两个过程 add-num 计算结果的分子 add-den 计算结果的分母 这种做法显然很不理想: 如果有多个有理数,记住成对的分子和分母是很大麻烦 相互分离的两个调用很容易写错 所有运算的实现/使用都有同样问题 应该把一个有理数的分子分母粘在一起,做成复合数据(一个整体) 有了复合数据对象,就能在更高概念层上定义和使用操作(处理有 理数,而不是处理两个整数),更清晰,更容易理解和使用 数据抽象的定义(表示和操作实现细节)与使用分离,提高了程序 模块性。两边都可以独立演化,更容易维护修改 程序设计技术和方法 裘宗燕,2014-3-13 -3- 数据抽象的意义 实现数据抽象,编程语言需要提供: 粘合机制,支持把一组数据对象组合成一个整体 操作定义机制,定义针对组合数据的操作 抽象机制,屏蔽实现细节,使组合数据能像简单数据一样使用 处理复合数据的一个关键概念是闭包:组合数据粘合机制应该不仅能用 于基本数据,也能用于复合数据,以支持构造更复杂的复合数据 本章还要讨论: 复合数据如何支持以“匹配和组合”方式工作的编程接口 通过定义数据抽象,进一步模糊“过程”和“数据”的差异 符号表达式的处理,这种表达式的基本部分是符号而不是数 通用型(泛型)操作,使同样操作可能用于不同的数据 数据制导(导向/驱动)的程序设计,方便新数据类的加入 程序设计技术和方法 裘宗燕,2014-3-13 -4- 数据抽象入门 一个过程描述了一类计算的模式,又可以作为元素用于实现其他(更复 杂的)过程。因此过程是一种抽象,过程抽象 屏蔽计算的实现细节,可以用任何功能/使用形式合适的过程取代 规定了使用方式,使用方只依赖于抽象的使用方式约定 数据抽象的情况类似。一个数据抽象实现一类数据所需的所有功能,又 像基本数据元素一样可以作为其他数据抽象的元素 屏蔽一种复合数据的实现细节 提供一套抽象操作,使用组合数据的就像是使用基本数据 数据抽象的接口(界面)包括两类操作:构造函数和选择函数。构 造函数基于一些参数构造这类数据,选择函数提取其内容 后面将说明,如果需要支持基于状态的程序设计,那么就需要增加另外 一类变动操作(mutation,修改操作) 下面以有理数为例讨论数据抽象的构造 程序设计技术和方法 裘宗燕,2014-3-13 -5-

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档