软件构造3.3 ADT

3.3 ADT1、抽象数据类型与表示独立性:如何设计良好的抽象数据结构,通过封装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在 的bug——在client和imp;2、 ADT的特性:不变量、表示泄漏、抽象函数AF、表示不变量RI;3、抽象类型:强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设计/使用操作即可。ADT是由操作定义的,与其内部如何实现无关! ADT操作的四种类型

  • Creators构造器 可能实现为构造函数或静态函数
  • Producers 生产器
  • Obsrrves 观察器
  • Mutators 变值器 改变对象属性的方法; 变值器通常返回void,一旦返回void,则必然意

味着它改变了对象的某些内部状态;也可能返回非空类型。

  1. 不同的内部表示,需要设计不同的AF和RI
  2. 选择某种特定的表示方式R,进而指定某个子集是“合法”的(RI),并为该子集中的每个值做出“解释”(AF)——即如何映射到抽象空间中的值
  3. 即使是同样的R、同样的RI,也可能有不同的AF,即“解释不同”。

  1. ADT的规约里只能使用client可见的内容来撰写,包括参数、返回值、异常等
  2. 如果规约里需要提及“值”,只能使用A空间中的“值”
  3. ADT的规约里也不应谈及任何内部表示的细节,以及R空间中的任何值;ADT的内部表示(私有属性)对外部都应严格不可见,故在代码中以注释的形式写出AF和RI而不能在Javadoc文档中,防止被外部看到而破坏表示独立性/信息隐藏

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年5月16日
下一篇 2018年5月16日

相关推荐