【思维导图】HIT软件构造Java笔记——第六章抽象数据类型(二)

请添加图片描述
(在app上图片看不清的话可以复制链接到浏览器里,就可以看清了,电脑端也可以看清)
尝试根据上课的PPT整理出了一份不是很全的思维导图,省略了一些东西,如果有不对的地方或者困惑的地方请多多指正。下附xmind导出大纲,希望能对大家的学习有所帮助.

抽象数据类型(二)

一、设计抽象类型

1. 良好的ADT设计

  • 需要经验法则
  • 选择好的操作
  • 设计行为规约spec

2. 经验法则

设计简洁、一致的操作
– 操作的意图应当良好定义
– 行为应当连贯

要满足用户对数据所有的操作需要,难度简单

要么普适,要么具体–不要混合

二、Representation Independence

1. 定义

用户使用ADT时无需考虑内部如何实现–

2. 测试优先编程

三、测试抽象数据类型

1. 测试creators, producers, mutators

2. 测试observers

3. risk

被依赖的其他方法有错误–被测试方法结果失效

4. 输入空间划分

测试覆盖所有划分

四、不变量

1. ADT始终需要保持其不变量

  • 程序在任何时候总是保持true的性质
    – 例:immutability
  • ADT负责不变量,与客户端无关

2. 为什么h4>
  • 需要保持程序的正确性
  • without不变量–需要随时检查是否改变

3. 防御性编程

  • 假设用户存在破坏ADT不变量的恶意
  • public->private, 增加final属性, 或使用immutable类型的对象
  • 或:将责任留给用户:
    1. 当防御性拷贝的太假太高时不得已的举措
    2. 将存在潜在bug

五、RI和AF

1. 概括

  • 表示值构成的空间: implementor空间–RI

  • 抽象值构成的空间: client空间–AF

  • R->A的映射
    满射:抽象value至少对应1个repvalue(未必单射,未必双射

2. AF

  • R和A之间映射关系的函数:将R解释为一个A中的一个值

3. RI

  • 某个具体表示是否合法

如何确定AF和RI

  • ADT本身不能决定
    • 可以有多种内部实现方式–对应不同的AF,RI
    • 对于任意种RI, 必然需要对应的AF进行映射
  • ADT+R(+RI)均不能
    • 映射方式不同&解释方式不同

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93778 人正在系统学习中

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

上一篇 2022年5月6日
下一篇 2022年5月6日

相关推荐