抽象函数(abstract):是表示值到其对应的抽象值的映射。它反映两个空间的对应关系,一个是表示空间R,一个是抽象空间A。
AF : R → A
AF是满射、非单射但不一定是双射,下面是一个例子
表示不变量(Representation invariant):我们也可以把它看成一个从R映射到boolean的映射。它是为了判断我们的实现的每个表示是否“合法”。
对于表示值r,当且仅当r被AF映射到了A,RI(r)为真。
我们也可以将RI看成所有表示值的一个子集,包含了所有合法的表示值或者说RI是一个条件,描述了什么是“合法”的表示值。
举个例子,将不出现重复字符的字符串视为“合法的”,那么对于下图而言,a,ac,acb是满足RI的,而aa是不满足的。
对于同样的表示空间R,可以有不同的RI,而对于同样的R和RI,同样可以有不同的AF,所有的这些属性都是为了ADT能够更加规范,更具安全性而服务。