RI和AF

        抽象数据类型(ADT)是强调操作的一种数据类型,用户程序员无需关心抽象数据类型的内部实现。ADT分为可变的(mutable)和不可变的(immutable),二者都在方法中都可以存在构造器(Creators)、生产器(Producers)和观察器(Observers),唯一的区别在于不可变的类型没有变值器(Mutators)以改变对象属性,而可变的类型允许存在变值器对域进行修改。

creator:创建一个全新的对象
producer:产生一个和当前类型一样的对象(从类型的旧对象创建新对象)
observer:获取抽象类型的对象并返回不同类型
mutator:改变对象属性的方法

        表示独立性(Rep Independence)指的是client使用ADT时无需考虑其内部如何实现,ADT内部表示的变化不应影响外部spec和客户端。表示独立性是一种性质,保证了ADT的内部表示和用户是区分开来的,除非rep说明了具体的前置条件和后置条件,用户是不允许修改ADT的内部表示的,即使rep说明了条件,也表示不变性(RI)和抽象函数(AF)。

        表示空间(R)和抽象值空间(A):表示空间包含ADT的表示方法所能够表示的所有值,例如当一个域为字符串类型时,那么它的表示空间就是所有的字符串。抽象值空间包含所有用户看到和使用的值,是用户真正关心的地方,例如,我们用字符串中的所有字符表示一个字符集合,且字符串中没有重复字符,那么抽象值空间中就是一些由字符构成的集合。

RI(针对Rep的每一个field以及多个fields之间的关系,进行条件限定,要精确)、AF(AF:给出client看到的A值是什么,是对每一个Rep值的“数学运算)、Safety from rep exporsure (给出理由,证明代码并未对外泄露其内部表示——自证清白)写到注释里。
 

上一篇:ubuntu搭建eclipse的android开发环境


下一篇:隐式反馈的去噪,模型取得巨大提升!