3.3 ADT1、抽象数据类型与表示独立性:如何设计良好的抽象数据结构,通过封装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在 的bug——在client和imp;2、 ADT的特性:不变量、表示泄漏、抽象函数AF、表示不变量RI;3、抽象类型:强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设计/使用操作即可。ADT是由操作定义的,与其内部如何实现无关! ADT操作的四种类型
- Creators构造器 可能实现为构造函数或静态函数
- Producers 生产器
- Obsrrves 观察器
- Mutators 变值器 改变对象属性的方法; 变值器通常返回void,一旦返回void,则必然意
味着它改变了对象的某些内部状态;也可能返回非空类型。
- 不同的内部表示,需要设计不同的AF和RI
- 选择某种特定的表示方式R,进而指定某个子集是“合法”的(RI),并为该子集中的每个值做出“解释”(AF)——即如何映射到抽象空间中的值
- 即使是同样的R、同样的RI,也可能有不同的AF,即“解释不同”。
- ADT的规约里只能使用client可见的内容来撰写,包括参数、返回值、异常等
- 如果规约里需要提及“值”,只能使用A空间中的“值”
- ADT的规约里也不应谈及任何内部表示的细节,以及R空间中的任何值;ADT的内部表示(私有属性)对外部都应严格不可见,故在代码中以注释的形式写出AF和RI而不能在Javadoc文档中,防止被外部看到而破坏表示独立性/信息隐藏
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!