书籍详情
面向对象数据结构与软件开发:Java版
作者:[加]Jean-Paul Tremblay,[加]Grant A.Cheston著;李晔,林波,詹文军译;李晔译
出版社:清华大学出版社
出版时间:2005-03-01
ISBN:9787302099505
定价:¥128.00
购买这本书可以去
内容简介
本书全面地介绍了面向对象的编程技术。它提供了全面的算法分析的基本内容,比较了算法和数据结构,以及用于面向对象分析和大型信息系统设计的基本软件工程原则。它是第一本在中级水平上介绍软件设计和开发的数据结构书籍。 主要特色: 数据结构库:详细讨论并用Java实现了列表、堆、补偿树、图表和文件。 UML:针对二、三年级的学生,通过UML子集介绍了软件分析和建模技术。 计时分析:贯穿全书广泛地分析和使用了计时技术。 两个案例分析:通过实例说明了非一般系统的分析和设计的面向对象的开发过程。 电子资料:书中涉及到的所有代码以及带有所有标准数据结构实现过程的设计良好的数据结构库的示例均可下载使用。
作者简介
Jean-PaulTremblay获得了CaseInstituteofTechnology计算机科学专业的博士学位。目前他是加拿大萨喀彻温大学计算机科学系的教授。Tremblay教授与人合作了McGraw-HillScienceSeries的几本书,并且是PrenticeHall出版的LogicandDiscreteMathematics:AComputerSciencePerspective的作者之一。他目前的研究重点在CASE系统和自动软件图表布局工具上。GrantA.Cheston获得了UniversityofToronto计算机科学专业的博士学位一。目前他是加拿大萨斯喀彻温大学计算机科学系的教授。Cheston教授的研究兴趣在图形算法领域。
目录
第1章 软件开发
1.1 介绍
1.2 软件开发过程
1.3 评估软件质量
1.3.1 软件产品中的质量因素
1.3.2 衡量软件质量
1.4 软件设计原则
1.4.1 模块化和本地化
1.4.2 抽象和信息隐藏
1.4.3 松散耦合度和高内聚度
1.5 软件设计方法
1.5.1 自上而下的设计方法
1.5.2 组合式(自下而上)设计
1.5.3 面向对象设计
1.6 小结
第2章 Java基础
2.1 简介
2.2 注释和空白
2.3 命名约定
2.4 数据类型
2.4.1 基本类型
2.4.2 引用类型
2.5 字面量和常量
2.6 运算符
2.6.1 算术运算符
2.6.2 增量和减量运算符
2.6.3 关系运算符
2.6.4 布尔运算符
2.6.5 运算的面向对象表示法
2.6.6 字符串运算
2.7 基本语句
2.7.1 赋值语句
2.7.2 用于控制台输入和输出的语句
2.7.3 声明语句
2.7.4 复合语句或块
2.7.5 if语句
2.7.6 While语句
2.7.7 for语句
2.7.8 Switch语句
2.8 方法
2.9 类声明
2.10 Java程序
2.11 对象
2.11.1 打印对象
2.11.2 对象等同性
2.11.3 this对象
2.11.4 可访问性
2.12 继承性
2.13 实参传递
2.14 修复程序错误
2.14.1 编译时错误
2.14.2 运行时错误
2.14.3 针对错误输出的调试技术
2.15 I/O到文本文件
2.16 Java虚拟机
2.17 图形用户界面I/O
2.18 小结
第3章 对象和类
3.1 介绍
3.2 模型和建模
3.3 对象
3.3.1 什么是对象
3.3.2 状态
3.3.3 行为
3.3.4 接口
3.3.5 标识
3.3.6 对象类型
3.4 类和实例
3.5 描述类交互作用的关系
3.5.1 继承
3.5.2 聚合
3.5.3 关联
3.5.4 类图
3.5.5 由语言支持的关系
3.6 小结
第4章 数组和字符串
4.1 一个数组应用程序和问题分析
4.2 Java中的数组
4.3 问题解决方案
4.4 引用类型的存储结构、赋值和等同性
4.5 字符串
4.6 StringBuffer类
4.7 小结
4.8 Java的新特性
第5章 数组算法及其分析
5.1 算法分析
5.1.1 时间复杂度分析
5.1.2 从实验角度比较时间复杂度
5.1.3 空间复杂度比较
5.2 查找
5.2.1 线性搜索
5.2.2 折半查找
5.3 排序
5.3.1 冒泡排序
5.3.2 归并排序
5.4 对象比较、接口以及对象类简介
5.5 数组字典
5.5.1 基本字典
5.5.2 基本关键字字典
5.6 小结
5.7 Java的新特性
第6章 抽象数据类型及其实现
6.1 简介
6.2 数据类型
6.3 抽象数据类型
6.3.1 简介
6.3.2 公理法
6.3.3 构建法
6.3.4 后置条件法
6.4 Java中的抽象数据类型及实现
6.4.1 Java中抽象数据类型的语法描述
6.4.2 Java中抽象数据类型的语义描述
6.4.3 Java中抽象数据类型的实现
6.5 断言检查和异常
6.6 类和类成员的可见性
6.7 契约式设计简介
6.8 小结
6.9 Java的新特性
第7章 列表基础
7.1 一个简单的列表应用程序
7.2 列表抽象数据类型
7.3 实现
7.3.1 数组的实现
7.3.2 链表实现
7.3.3 处理异常
7.4 链接操作实例
7.4.1 列表中的最大值
7.4.2 列表中某个特定值的位置
7.4.3 在一个值的前面插入另外一个值
7.4.4 toString()、equals()和clone()方法
7.5 有序简单列表
7.6 列表变量
7.6.1 尾指针
7.6.2 双向链表
7.6.3 带头结点的链表以及循环链表
7.7 小结
7.8 Java的新特性
第8章 高级列表概念和Uos数据结构库
8.1 列表工具
8.1.1 指针
8.1.2 迭代器
8.1.3 遍历器
8.2 字典和列表数据结构库
8.3 应用
8.3.1 大学图书馆应用程序
8.3.2 内存管理
8.4 多态列表和异质列表
8.5 小结
8.6 Java的新特性
第9章 堆栈
9.1 简介
9.2 堆栈ADT
9.3 实现
9.4 应用
9.4.1 括号匹配
9.4.2 Java动态模型
9.5 小结
第10章 递归
10.1 递归的数学定义
10.2 递归方法
10.3 开发和校验递归程序
10.4 简单递归程序的时间分析
10.5 递归列表方法
10.6 小结
10.7 Java的新特性
第11章 队列和优先队列
11.1 队列
11.1.1 队列ADT
11.1.2 实现
11.1.3 应用
11.2 优先队列
11.2.1 优先队列ADT
11.2.2 实现
11.3 应用:离散模拟
11.4 小结
11.5 Java的新特性
第12章 面向对象开发:一个实例
12.1 简介
12.2 面向对象开发生命周期
12.3 软件开发的责任人
12.4 一种面向对象的开发方法
12.5 一个简化的银行的实例
12.5.1 确定系统需求
12.5.2 确定系统边界
12.5.3 标识对象和类
12.5.4 标识类之间的交互和类的特征
12.5.5 把类分组成子系统
12.5.6 确定高层系统体系结构
12.5.7 发现更多类的细节并完成类的详细设计
12.5.8 为第一个工作原型写代码
12.5.9 从质量角度考虑重新检查系统
12.5.10 给第一个工作原型优化代码并完成测试
12.5.11 系统的输出样本
12.6 设计警告
12.7 无缝软件开发
12.8 对象模型的优点
12.9 小结
12.10 Java的新特性
第13章 树
13.1 介绍和应用
13.2 二叉树的抽象数据类型
13.3 二叉树
13.3.1 实现
13.3.2 遍历
13.3.3 二叉排序树
13.3.4 树的工具
13.3.5 Uos库中的二叉树数据结构
13.4 一般树
13.5 应用
13.5.1 更好的字典
13.5.2 语言、语法和分析
13.5.3 表达式求值
13.6 小结
第14章 基本问题建模及系统设计
14.1 简介
14.2 静态系统结构建模
14.2.1 生成上下文模型
14.2.2 如何发现类
14.2.3 使用关系描述类交互
14.2.4 子系统(包)
14.2.5 在系统设计中使用分层结构
14.3 系统行为建模
14.3.1 用户、参与者和用例
14.3.2 事件
14.3.3 时序图
14.3.4 协作图
14.4 学生注册系统的分析和结构设计
14.4.1 确定系统需求
14.4.2 确定系统边界
14.4.3 确定对象和类
14.4.4 确定类继承和特性
14.4.5 将类组成子系统
14.4.6 确定高层系统结构
14.5 小结
第15章 软件设计的原则
15.1 简介
15.2 契约式设计
15.2.1 回顾
15.2.2 客户-f共应商契约
15.2.3 分包契约和继承
15.2.4 预处理设计
15.2.5 其他类型的断言支持
15.2.6 使用断言的目的
15.3 异常处理
15.3.1 异常处理的概念
15.3.2 基本的异常处理
15.3.3 预定义的异常类
15.3.4 定义并引发你自己的异常
15.3.5 异常处理的策略
15.3.6 继承对异常处理的影响
15.3.7 总结以及异常的指导原则
15.4 类设计
15.4.1 类牛命周期
15.4.2 类的状态空间和行为
15.4.3 函数中的副作用
15.4.4 方法中有多少参数
15.4.5 保持类的简单性
15.4.6 处理异常情况:类的健壮性·
15.4.7 类级别的设计原则
15.5 建立继承分类
15.5.1 一些继承分类的概览
15.5.2 继承与聚合
15.5.3 继承分类的一些特性
15.5.4 建立优秀继承分类的原则·
15.6 面向对象软件的耦合和内聚
15.6.1 耦合
15.6.2 内聚
15.7 软件设计中使用模式
15.7.1 简介
15.7.2 回顾前面介绍的模式
15.7.3 体系结构模式
15.7.4 设计模式
15.8 子系统设计
15.8.1 耦合和内聚
15.8.2 子系统的边界类
15.9 一个学生注册系统的详细设计
15.10 小结
第16章 软件测试
16.1 软件测试基础
16.1.1 基本术语
16.1.2 测试的基本概念
16.1.3 确定测试用例
16.1.4 测试的层次
16.1.5 测试的心理
16.1.6 测试的原则
16.2 人工测试
16.2.1 代码阅读
16.2.2 结构化走查方式
16.3 黑盒测试
16.3.1 边界值测试
16.3.2 等价类测试
16.4 白盒(基于程序的)测试
16.5 面向对象的测试
16.5.1 测试面向对象软件中存在的问题·
16.5.2 方法测试
16.5.3 测试递归方法
16.5.4 基于状态的类测试
16.5.5 继承对测试的影响
16.5.6 面向对象的集成测试
16.5.7 面向对象的系统测试
16.6 找出并修改动态错误
16.6.1 计划调试
16.6.2 强力调试
16.6.3 回溯调试
16.6.4 归纳调试
16.6.5 演绎调试
16.6.6 调试示例
16.7 小结
第17章 包、集合和词典
17.1 简介
17.2 位向量的实现
17.3 哈希表
17.3.1 简介
17.3.2 设计哈希函数
17.3.3 冲突解决技术
17.4 专用查找树
17.4.1 简介和动机
17.4.2 平衡二叉树
17.4.3 2-3树
17.4.4 高效率的数据结构
17.4.5 trie树
17.5 更好的优先队列
17.6 小结
第18章 排序
18.1 简介
18.2 复习基本排序算法
18.3 递归归并排序
18.4 快速排序
18.5 使用递归关系表示时间要求
18.5.1 递归关系推导
18.5.2 利用重复替换解决递归关系
18.5.3 解决分治递归关系
18.6 堆排序
18.7 基数排序
18.8 地址-计算排序
18.9 小结
第19章 图
19.1 图建模简介和示例
19.2 图论的基本定义
19.3 图的ADT
19.4 路径、可到达性和连通性
19.5 图的表示方法
19.5.1 邻接矩阵表示法
19.5.2 邻接表表示法
19.5.3 可查找的图
19.6 根据图的矩阵计算路径
19.6.1 使用矩阵乘法计算可到达性
19.6.2 有效的到达性算法
19.6.3 所有节点对最短路径算法
19.6.4 单源点最短路径算法
19.7 无向图遍历
19.7.1 广度优先搜索
19.7.2 深度优先搜索
19.8 应用
19.8.1 连通性和分量
19.8.2 展开树
19.8.3 拓扑排序
19.8.4 调度网络
19.8.5 测试中的图
19.9 小结
第20章 文件
20.1 简介
20.2 外存储设备
20.2.1 磁带
20.2.2 磁盘
20.3 定义和概念
20.4 Java中的永久存储支持
20.4.1 简介
20.4.2 基本的字节输入/输出
20.4.3 输入/输出流小结
20.4.4 对象序列化
20.4.5 随机访问文件
20.4.6 Java缓冲流概述
20.4.7 ObjectFileUos类
20.5 顺序文件
20.5.1 顺序文件的结构
20.5.2 处理顺序文件
20.6 直接文件
20.7 索引顺序文件
20.7.1 索引顺序文件表示法
20.7.2 索引顺序文件的实现
20.8 B-树文件
20.9 多关键字访问
20.10 小结
附录A Java附录
附录B Java数据结构库
附录C 数学础知识
1.1 介绍
1.2 软件开发过程
1.3 评估软件质量
1.3.1 软件产品中的质量因素
1.3.2 衡量软件质量
1.4 软件设计原则
1.4.1 模块化和本地化
1.4.2 抽象和信息隐藏
1.4.3 松散耦合度和高内聚度
1.5 软件设计方法
1.5.1 自上而下的设计方法
1.5.2 组合式(自下而上)设计
1.5.3 面向对象设计
1.6 小结
第2章 Java基础
2.1 简介
2.2 注释和空白
2.3 命名约定
2.4 数据类型
2.4.1 基本类型
2.4.2 引用类型
2.5 字面量和常量
2.6 运算符
2.6.1 算术运算符
2.6.2 增量和减量运算符
2.6.3 关系运算符
2.6.4 布尔运算符
2.6.5 运算的面向对象表示法
2.6.6 字符串运算
2.7 基本语句
2.7.1 赋值语句
2.7.2 用于控制台输入和输出的语句
2.7.3 声明语句
2.7.4 复合语句或块
2.7.5 if语句
2.7.6 While语句
2.7.7 for语句
2.7.8 Switch语句
2.8 方法
2.9 类声明
2.10 Java程序
2.11 对象
2.11.1 打印对象
2.11.2 对象等同性
2.11.3 this对象
2.11.4 可访问性
2.12 继承性
2.13 实参传递
2.14 修复程序错误
2.14.1 编译时错误
2.14.2 运行时错误
2.14.3 针对错误输出的调试技术
2.15 I/O到文本文件
2.16 Java虚拟机
2.17 图形用户界面I/O
2.18 小结
第3章 对象和类
3.1 介绍
3.2 模型和建模
3.3 对象
3.3.1 什么是对象
3.3.2 状态
3.3.3 行为
3.3.4 接口
3.3.5 标识
3.3.6 对象类型
3.4 类和实例
3.5 描述类交互作用的关系
3.5.1 继承
3.5.2 聚合
3.5.3 关联
3.5.4 类图
3.5.5 由语言支持的关系
3.6 小结
第4章 数组和字符串
4.1 一个数组应用程序和问题分析
4.2 Java中的数组
4.3 问题解决方案
4.4 引用类型的存储结构、赋值和等同性
4.5 字符串
4.6 StringBuffer类
4.7 小结
4.8 Java的新特性
第5章 数组算法及其分析
5.1 算法分析
5.1.1 时间复杂度分析
5.1.2 从实验角度比较时间复杂度
5.1.3 空间复杂度比较
5.2 查找
5.2.1 线性搜索
5.2.2 折半查找
5.3 排序
5.3.1 冒泡排序
5.3.2 归并排序
5.4 对象比较、接口以及对象类简介
5.5 数组字典
5.5.1 基本字典
5.5.2 基本关键字字典
5.6 小结
5.7 Java的新特性
第6章 抽象数据类型及其实现
6.1 简介
6.2 数据类型
6.3 抽象数据类型
6.3.1 简介
6.3.2 公理法
6.3.3 构建法
6.3.4 后置条件法
6.4 Java中的抽象数据类型及实现
6.4.1 Java中抽象数据类型的语法描述
6.4.2 Java中抽象数据类型的语义描述
6.4.3 Java中抽象数据类型的实现
6.5 断言检查和异常
6.6 类和类成员的可见性
6.7 契约式设计简介
6.8 小结
6.9 Java的新特性
第7章 列表基础
7.1 一个简单的列表应用程序
7.2 列表抽象数据类型
7.3 实现
7.3.1 数组的实现
7.3.2 链表实现
7.3.3 处理异常
7.4 链接操作实例
7.4.1 列表中的最大值
7.4.2 列表中某个特定值的位置
7.4.3 在一个值的前面插入另外一个值
7.4.4 toString()、equals()和clone()方法
7.5 有序简单列表
7.6 列表变量
7.6.1 尾指针
7.6.2 双向链表
7.6.3 带头结点的链表以及循环链表
7.7 小结
7.8 Java的新特性
第8章 高级列表概念和Uos数据结构库
8.1 列表工具
8.1.1 指针
8.1.2 迭代器
8.1.3 遍历器
8.2 字典和列表数据结构库
8.3 应用
8.3.1 大学图书馆应用程序
8.3.2 内存管理
8.4 多态列表和异质列表
8.5 小结
8.6 Java的新特性
第9章 堆栈
9.1 简介
9.2 堆栈ADT
9.3 实现
9.4 应用
9.4.1 括号匹配
9.4.2 Java动态模型
9.5 小结
第10章 递归
10.1 递归的数学定义
10.2 递归方法
10.3 开发和校验递归程序
10.4 简单递归程序的时间分析
10.5 递归列表方法
10.6 小结
10.7 Java的新特性
第11章 队列和优先队列
11.1 队列
11.1.1 队列ADT
11.1.2 实现
11.1.3 应用
11.2 优先队列
11.2.1 优先队列ADT
11.2.2 实现
11.3 应用:离散模拟
11.4 小结
11.5 Java的新特性
第12章 面向对象开发:一个实例
12.1 简介
12.2 面向对象开发生命周期
12.3 软件开发的责任人
12.4 一种面向对象的开发方法
12.5 一个简化的银行的实例
12.5.1 确定系统需求
12.5.2 确定系统边界
12.5.3 标识对象和类
12.5.4 标识类之间的交互和类的特征
12.5.5 把类分组成子系统
12.5.6 确定高层系统体系结构
12.5.7 发现更多类的细节并完成类的详细设计
12.5.8 为第一个工作原型写代码
12.5.9 从质量角度考虑重新检查系统
12.5.10 给第一个工作原型优化代码并完成测试
12.5.11 系统的输出样本
12.6 设计警告
12.7 无缝软件开发
12.8 对象模型的优点
12.9 小结
12.10 Java的新特性
第13章 树
13.1 介绍和应用
13.2 二叉树的抽象数据类型
13.3 二叉树
13.3.1 实现
13.3.2 遍历
13.3.3 二叉排序树
13.3.4 树的工具
13.3.5 Uos库中的二叉树数据结构
13.4 一般树
13.5 应用
13.5.1 更好的字典
13.5.2 语言、语法和分析
13.5.3 表达式求值
13.6 小结
第14章 基本问题建模及系统设计
14.1 简介
14.2 静态系统结构建模
14.2.1 生成上下文模型
14.2.2 如何发现类
14.2.3 使用关系描述类交互
14.2.4 子系统(包)
14.2.5 在系统设计中使用分层结构
14.3 系统行为建模
14.3.1 用户、参与者和用例
14.3.2 事件
14.3.3 时序图
14.3.4 协作图
14.4 学生注册系统的分析和结构设计
14.4.1 确定系统需求
14.4.2 确定系统边界
14.4.3 确定对象和类
14.4.4 确定类继承和特性
14.4.5 将类组成子系统
14.4.6 确定高层系统结构
14.5 小结
第15章 软件设计的原则
15.1 简介
15.2 契约式设计
15.2.1 回顾
15.2.2 客户-f共应商契约
15.2.3 分包契约和继承
15.2.4 预处理设计
15.2.5 其他类型的断言支持
15.2.6 使用断言的目的
15.3 异常处理
15.3.1 异常处理的概念
15.3.2 基本的异常处理
15.3.3 预定义的异常类
15.3.4 定义并引发你自己的异常
15.3.5 异常处理的策略
15.3.6 继承对异常处理的影响
15.3.7 总结以及异常的指导原则
15.4 类设计
15.4.1 类牛命周期
15.4.2 类的状态空间和行为
15.4.3 函数中的副作用
15.4.4 方法中有多少参数
15.4.5 保持类的简单性
15.4.6 处理异常情况:类的健壮性·
15.4.7 类级别的设计原则
15.5 建立继承分类
15.5.1 一些继承分类的概览
15.5.2 继承与聚合
15.5.3 继承分类的一些特性
15.5.4 建立优秀继承分类的原则·
15.6 面向对象软件的耦合和内聚
15.6.1 耦合
15.6.2 内聚
15.7 软件设计中使用模式
15.7.1 简介
15.7.2 回顾前面介绍的模式
15.7.3 体系结构模式
15.7.4 设计模式
15.8 子系统设计
15.8.1 耦合和内聚
15.8.2 子系统的边界类
15.9 一个学生注册系统的详细设计
15.10 小结
第16章 软件测试
16.1 软件测试基础
16.1.1 基本术语
16.1.2 测试的基本概念
16.1.3 确定测试用例
16.1.4 测试的层次
16.1.5 测试的心理
16.1.6 测试的原则
16.2 人工测试
16.2.1 代码阅读
16.2.2 结构化走查方式
16.3 黑盒测试
16.3.1 边界值测试
16.3.2 等价类测试
16.4 白盒(基于程序的)测试
16.5 面向对象的测试
16.5.1 测试面向对象软件中存在的问题·
16.5.2 方法测试
16.5.3 测试递归方法
16.5.4 基于状态的类测试
16.5.5 继承对测试的影响
16.5.6 面向对象的集成测试
16.5.7 面向对象的系统测试
16.6 找出并修改动态错误
16.6.1 计划调试
16.6.2 强力调试
16.6.3 回溯调试
16.6.4 归纳调试
16.6.5 演绎调试
16.6.6 调试示例
16.7 小结
第17章 包、集合和词典
17.1 简介
17.2 位向量的实现
17.3 哈希表
17.3.1 简介
17.3.2 设计哈希函数
17.3.3 冲突解决技术
17.4 专用查找树
17.4.1 简介和动机
17.4.2 平衡二叉树
17.4.3 2-3树
17.4.4 高效率的数据结构
17.4.5 trie树
17.5 更好的优先队列
17.6 小结
第18章 排序
18.1 简介
18.2 复习基本排序算法
18.3 递归归并排序
18.4 快速排序
18.5 使用递归关系表示时间要求
18.5.1 递归关系推导
18.5.2 利用重复替换解决递归关系
18.5.3 解决分治递归关系
18.6 堆排序
18.7 基数排序
18.8 地址-计算排序
18.9 小结
第19章 图
19.1 图建模简介和示例
19.2 图论的基本定义
19.3 图的ADT
19.4 路径、可到达性和连通性
19.5 图的表示方法
19.5.1 邻接矩阵表示法
19.5.2 邻接表表示法
19.5.3 可查找的图
19.6 根据图的矩阵计算路径
19.6.1 使用矩阵乘法计算可到达性
19.6.2 有效的到达性算法
19.6.3 所有节点对最短路径算法
19.6.4 单源点最短路径算法
19.7 无向图遍历
19.7.1 广度优先搜索
19.7.2 深度优先搜索
19.8 应用
19.8.1 连通性和分量
19.8.2 展开树
19.8.3 拓扑排序
19.8.4 调度网络
19.8.5 测试中的图
19.9 小结
第20章 文件
20.1 简介
20.2 外存储设备
20.2.1 磁带
20.2.2 磁盘
20.3 定义和概念
20.4 Java中的永久存储支持
20.4.1 简介
20.4.2 基本的字节输入/输出
20.4.3 输入/输出流小结
20.4.4 对象序列化
20.4.5 随机访问文件
20.4.6 Java缓冲流概述
20.4.7 ObjectFileUos类
20.5 顺序文件
20.5.1 顺序文件的结构
20.5.2 处理顺序文件
20.6 直接文件
20.7 索引顺序文件
20.7.1 索引顺序文件表示法
20.7.2 索引顺序文件的实现
20.8 B-树文件
20.9 多关键字访问
20.10 小结
附录A Java附录
附录B Java数据结构库
附录C 数学础知识
猜您喜欢