1.抽象和用户定义类型
除了编程语言自带的数据类型,用户也可以自定义数据类型
抽象类型(Abstract types)关注于操作,用户不必担心它的值是如何实际存储的,重要的是功能
一个抽象类型被它的操作所定义,与其内部如何实现无关
2.分类类型和操作
抽象数据类型(ADT)的操作可以分为几类:
- 构造器(Creators): 从无到有,构造一个对象的方法。构造器可以将对象作为参数。 t* → T
- 生产器(Producers): 从旧的对象中产生一个新的对象。
T+, t* → T - 观察器(Observers): 返回对象的一些信息。 T+, t* → t
- 变值器(Mutators): 改变对象属性的方法。
T+, t* → void | t | T
T是抽象类型
t是另一种类型
+表示该类型可能出现一次或多次
*表示出现了零次或多次
3.设计ADT
良好的ADT设计满足:
- 设计简洁、一致的操作,通过简单行为的组合实现复杂的操作
- 要足以支持client对数据所做的所有操作需要,且用操作满足client需要的难度要低。确保每个属性都能被客户端访问,对于复杂的操作