06抽象数据类型
1. 抽象数据类型
抽象数据类型(ADT,abstract data type)是指一些数据以及对这些数据所进行的操作的集合。这些操作即向程序的其余部分描述了这些数据是怎么样的,也允许程序的其余部分改变这些数据。
“抽象数据类型”概念中“数据”一词的的用法有些随意。一个ADT可能是一个图形窗体以及所有能影响该窗体的操作;也可以是一个文件以及对这个文件进行的操作;或者是一张保险费率表以及相关操作。
要想理解面向对象编程,首先要理解ADT,不懂ADT的程序员开发出来的类知识名义上的“类”而已——实际上这种“类”只不过就是把一些稍微有点关系的数据和子程序堆在一起。然而在理解ADT之后,程序员就能写出在一开始很容易实现、日后也容易修改的类来。
抽象数据类型可以让你像在现实世界中一样操作实体,而不必再底层的实现上摆弄实体,这多么令人兴奋啊。你不用再向链表中插入一个节点了,而是可以在电子表格中添加一个数据单元格,或向一组窗体类型中添加一个新类型,或给火车模型加挂一节车厢。深入挖掘能在问题领域工作(而非在底层实现lingua工作)的能量吧!
2. 使用ADT的益处
-
可以隐藏实现细节
-
改动不会影响到整个程序
-
让接口能提供更多信息
-
更容易提高性能
-
让程序的正确性更显而易见
-
程序更具自我说明性
-
无须在程序内到处传递数据
-
你可以像在现实世界中那样操作实体,而不用在底层实现上操作它
3. 创建ADT的方法
- 把常见的底层数据类型创建为 ADT 并使用这些 ADT,而不再使用底层数据
- 把像文件这样的常用对象当成ADT
- 简单的事物也可当做ADT
- 不要让ADT依赖于其存储介质
道虽迩,不行不至;事虽小,不为不成。