一、ADT操作分类
- creator : 从无到有
- producer : 从有到新
- observer : 观察器
- mutator : 变值器,改变对象属性
二、测试ADT
- 针对creator、producer、mutator的测试 : 利用creator
- 针对creator的测试 : 利用creator、producer、mutator
三、Representation
概念
- Representation : 内部数据结构
Invariant
- 表示泄露 : client不应该有权限直接更改Representation
- 能用immutable就不用mutable
四、Abstraction Function
概念
- R : ADT的Representation,即ADT内部使用的数据结构
- A : client看到和使用的值
- 从R到A的映射就是AF
性质
- R中的有些元素是不合法的,即这些元素没有对应的A
- AF一定是满射(R中的元素可能没有A中的对应,但是A中的元素一定有R中的对应)
Rep Invariant (RI)
- RI是从R到boolean的函数
- RI可以被看作R的一个子集,包含了所有合法的表示值
ADT的设计步骤
- 选择R和A
- 设计RI
- 设计AF
- 做出具体的解释 : 每个rep value如何映射到abstract value
五、Beneficent mutation
- 定义 : 在不改变A的情况下改变R
六、ADT的主要注释内容
- RI和AF是如何设计的?
- immutable?final?
- private?
- defensive copies?