什么是抽象数据类型(ADT)?
Abstract Data Types
集合 <- 数据+对这些数据进行的操作
操作?
向程序的其余部分描述这些数据是什么样的
允许程序的其余部分改变这些数据
为什么使用ADT?
隐藏细节
如果细节发生改变,只要其表现给外界的样子不变,就不会影响外界修改时不影响整个程序
同上提供更多信息
通过ADT暴露给外界的接口名来提供信息容易提高性能
重构时,修改ADT内部不会影响外界让正确性显而易见
清晰的接口名表示了对应的功能是做什么的让程序更具自我说明性
同上无需在程序内到处传数据
ADT之外的内容不需关心ADT内部数据不用在底层实现上操作实体(可以像在现实世界中那样操作)
ADT将底层操作封装起来,其接口名称更像是现实生活中使用的功能
使用ADT的指导建议
将常见的底层数据类型创建为ADT,使用这些ADT间接操作底层数据类型
应尽可能选择最高的抽象层次,便于人类理解可对ADT进行分层
可以在一个抽象层次之上再创建一个针对现实世界中问题的抽象层次,以便更好的把握问题,从而解决问题简单事物也可当成ADT
从而使用ADT的诸多好处ADT不应依赖于存储介质
让接口的名字与存储数据的方式无关(因为存储数据的方式是易变因素)
ADT与类的关系
ADT是类的概念的基础,类在ADT的基础上,还涉及到继承和多态这两个额外概念