抽象数据类型与面向对象概念.ppt

上传人:F****n 文档编号:97533632 上传时间:2019-09-04 格式:PPT 页数:70 大小:253.50KB
返回 下载 相关 举报
抽象数据类型与面向对象概念.ppt_第1页
第1页 / 共70页
抽象数据类型与面向对象概念.ppt_第2页
第2页 / 共70页
抽象数据类型与面向对象概念.ppt_第3页
第3页 / 共70页
抽象数据类型与面向对象概念.ppt_第4页
第4页 / 共70页
抽象数据类型与面向对象概念.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《抽象数据类型与面向对象概念.ppt》由会员分享,可在线阅读,更多相关《抽象数据类型与面向对象概念.ppt(70页珍藏版)》请在金锄头文库上搜索。

1、什么是数据结构 抽象数据类型及面向对象概念 数据结构的抽象层次 算法定义 模板 性能分析与度量,第一章 绪论,“学生”表格,“课程”表格,“选课单”包含如下信息 学号 课程编号 成绩 时间 学生选课系统中实体构成的网状关系,学生 (学号,姓名,性别,籍贯),课程 (课程号,课程名,学分),选课 (学号,课程号,成绩),UNIX文件系统的系统结构图,/ (root),bin,lib,user,etc,math,ds,sw,yin,tao,xie,Stack.cpp,Queue.cpp,Tree.cpp,数据(data),数据是信息的载体,是描述客观事物的数、字符、以及所有能输入到计算机中,被计算

2、机程序识别和处理的符号的集合。 数值性数据; 非数值性数据。,数据元素 (data element),数据的基本单位。在计算机程序中常作为一个整体进行考虑和处理。 有时一个数据元素可以由若干数据项(Data Item)组成。数据项是具有独立含义的最小标识单位。 数据元素又称为元素、结点、记录。,数据对象 (data object),数据的子集。具有相同性质的数据成员(数据元素)的集合。 整数数据对象 : N = 0, 1, 2, 学生数据对象。,什么是数据结构,定义: 由某一数据对象及该对象中所有数据成员之间的关系组成。记为: Data_Structure = D, R 其中,D 是某一数据对

3、象,R 是该对象中所有数据成员之间的关系的有限集合。,N 个网点之间的连通关系,树形关系,网状关系,1,5,2,4,3,6,1,5,2,4,3,6,数据结构是数据的组织形式,数据元素间的逻辑关系,即数据的逻辑结构; 数据元素及其关系在计算机存储内的表示,即数据的存储表示; 数据的运算,即对数据元素施加的操作。,数据的逻辑结构,数据的逻辑结构从逻辑关系上描述数据,与数据的存储无关; 数据的逻辑结构可以看作是从具体问题抽象出来的数据模型; 数据的逻辑结构与数据元素本身的形式、内容无关; 数据的逻辑结构与数据元素的相对位置无关。,数据的逻辑结构分类,线性结构。 线性表 非线性结构。 树 图(或网络)

4、,线性结构,树形结构,树 二叉树 二叉搜索树,14,13,12,11,2,3,4,5,6,7,8,9,10,3,1,5,8,7,10,11,9,9,8,7,4,5,6,6,2,3,13,1,bin,dev,etc,lib,user,1,堆结构,“最大”堆 “最小”堆,12,3,5,4,8,7,11,10,2,9,1,6,4,10,12,11,5,1,2,3,6,9,8,7,图结构 网络结构,1,2,5,6,4,3,1,2,5,4,3,6,11,33,18,14,6,6,5,16,19,21,数据的存储结构,数据的存储结构是逻辑结构用计算机语言的实现; 数据的存储结构依赖于计算机语言。 顺序存储

5、表示 链接存储表示 索引存储表示 散列存储表示,主要用于内存的存储表示,主要用于外存 (文件) 的存储表示,抽象数据类型及面向对象概念,数据类型。 定义:一组性质相同的值的集合, 以及定义于这个值集合上的一组操作的总称。 C语言中的数据类型。 char int float double void 字符型 整型 浮点型 双精度型 无值,构造数据类型由基本数据类型或构造数据类型组成。 构造数据类型由不同成分类型构成。 基本数据类型可以看作是计算机中已实现的数据结构。 数据类型就是数据结构,不过它是从编程者的角度来使用的。 数据类型是模板,必须定义属于某种数据类型的变量,才能参加运算。,抽象数据类型

6、 (ADTs: Abstract Data Types),由用户定义,用以表示应用问题的数据模型。 由基本的数据类型组成, 并包括一组相关的服务(或称操作)。 信息隐蔽和数据封装,使用与实现相分离。,抽象数据类型,查找 登录 删除 修改,符 号 表,自然数的抽象数据类型定义,ADT NaturalNumber is objects: 一个整数的有序子集合,它开始于0, 结束于机器能表示的最大整数(MaxInt)。 Function: 对于所有的 x, y NaturalNumber; False, True Boolean, +、-、=、=等都是可用的服务。 Zero( ) : Natural

7、Number 返回自然数0,IsZero(x) : if (x=0) 返回True Boolean else 返回False Add (x, y) : if (x+y=MaxInt)返回 x+y NaturalNumber else 返回MaxInt Subtract (x, y) : if (x y) 返回 0 NaturalNumber else 返回 x - y Equal (x, y) : if (x=y) 返回True Boolean else 返回 False Successor (x) : if (x=MaxInt) 返回 x NaturalNumber else 返回 x+1

8、end NaturalNumber,面向对象的概念,面向对象 = 对象类继承通信 对象 在应用问题中出现的各种实体、事件、规格说明等。 由一组属性值和在这组值上的一组服务(或称操作)构成。,类 (class),实例 (instance) 具有相同属性和服务的对象归于同一类,形成类。 类中的对象为该类的实例。,属性,aPoint1 aPoint2 aPoint3 aPoint4,服务,Draw( ) move(x, y) contains(aPoint),属性值,属性值,quadrilateral1,quadrilateral2,(35, 10) (50, 10) (35, 25) (50, 2

9、5),(45, 65) (50, 45) (65, 66) (60, 70),Draw( ) move(x, y) contains(aPoint),Draw( ) move(x, y) contains(aPoint),服务,服务,四边形类及其对象,quadrilateral,继承 派生类:四边形,三角形, 子类 特化类(特殊化类) 基类:多边形 父类 泛化类(一般化类) 通信 消息传递,Draw( ) move(x, y) contains(aPoint),Polygon,referencePoint Vertices,Polygon 类,referencePoint Vertices,D

10、raw( ) move(x, y) contains(aPoint),Polygon的子类 Quadrilateral类,Quadrilateral,线性结构 直接存取类 数组, 文件; 顺序存取类 表, 栈, 队列, 优先队列; 广义索引类 线性索引, 搜索树。 非线性结构 层次结构类 树, 二叉树, 堆; 群结构类 集合, 图。,数据结构的抽象层次,算法定义,定义:一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列。 特性: 输入 有0个或多个输入; 输出 有一个或多个输出(处理结果); 确定性 每步定义都是确切无歧义的; 有穷性 算法应在执行有穷步后结束; 有效性 每一条运算

11、应足够基本。,事例学习:选择排序问题。 明确问题:递增排序。 解决方案:逐个选择最小数据。 算法框架: for ( int i = 0; i n-1; i+ ) /n-1趟 从ai检查到an-1; 若最小整数在ak, 交换ai与ak; 细化程序:程序 SelectSort,算法设计 自顶向下,逐步求精,void selectSort ( int a , const int n ) /对n个整数a0,a1,an-1按递增顺序排序 for ( int i = 0; i n-1; i+ ) int k = i; /从ai查到an-1, 找最小整数, 在ak for ( int j = i+1; j

12、n; j+ ) if ( aj ak ) k = j; int temp = ai; ai = ak; ak = temp; ,模板 (template),定义 适合多种数据类型的类定义或算法,在特定环境下通过简单地代换,变成针对具体某种数据类型的类定义或算法。,用模板定义用于排序的数据表类 #ifndef DATALIST_H #define DATALIST_H #include template class dataList private: Type *Element; int ArraySize; void Swap (int m1, int m2); int MaxKey (int

13、 low, int high);,public: dataList (int size = 10) : ArraySize (size), Element (new Type Size) dataList ( ) delete Element; void Sort ( ); friend ostream #endif,类中所有操作作为模板函数的实现 #ifndef SELECTTM_H #define SELECTTM_H #include “datalist.h” template void dataList : Swap (int m1, int m2) /交换由m1, m2为下标的数组元

14、素的值 Type temp = Element m1; Element m1 = Element m2; Element m2 = temp; ,template int dataList: MaxKey (int low, int high) /查找数组Elementlow到Elementhigh /中的最大值,函数返回其位置 int max = low; for (int k = low+1, k = high, k+) if ( Elementmax Elementk ) max = k; return max; ,template ostream ,template istream ,template void dataList : Sort ( ) /按非递减顺序对ArraySize个关键码 /Element0到ElementArraySize-1排序 for ( int i = ArraySize -1; i 0; i- ) int j = MaxKey (0, i); if ( j != i ) swap (j, i); #endif,使用模板的选择排序算法的主函数 #include “selectt

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号