ADT与OOP
ADT不变量
- 必须时刻保证是true,保证程序的正确性,防止表示泄露
- 由ADT自身负责与client端行为无关
AF(abstract Function)
满射,未必单射,未必双射
RI(Rep Invariants) 表示不变量
表示某个表示是否合法,表示所有表示值的一个子集
对inmmutable ADT
在A空间的abstract value应不变,内部R空间可变
检查不变量的三个标准
- established by creators and producers;(创建时确保)
- preserved by mutators and observers;(观察/改变时保持)
- no rep esposure
利用参数中的ADT来维护pre-/post-conditions
ADT的一种实现技术-OOP(Object-oriented programming)
object
→state:fields
→behavior:methods
static→与class的实例相关
类成员变量→实例成员变量
类方法→实例方法
interface----定义ADT
class----实现ADT
封装与信息隐藏
- 使用接口类型声明变量
- 客户端仅仅使用接口声明定义的方法
- 客户端代码无法直接访问属性
继承和重写(Inheritance and overriding)
override
- 完全相同的参数列表,返回值
- 实际执行调用的方法运行过程决定
抽象类:至少包含一个抽象方法
抽象方法:必须没有实现体
三种多态
- 特殊多态
- 参数化多态
- subtyping(多类型多态,包含多态)