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 (给出理由,证明代码并未对外泄露其内部表示——自证清白)写到注释里。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值