java ADT 用例规约、RI、AF

  用例规约(Specification)是开发者和客户端的一种协议,由前置条件(pre-condition)和后置条件(post-condition)组成,前置条件则为客户端需要遵守的规范,若前置条件满足,则开发者必须满足后置条件。良好的规约可以使客户端清晰明了地使用,也方便开发者的实现。

当一个规约的前置条件更弱或后置条件更强时,我们称它是更强的,更强的规约可以替换其他规约,意味着对开发者的自由度和任务更重,而客户端的任务更轻。

规约有助于保护程序安全,便于理解,客户端不需要看到内部如何实现,通过规约就能使用。

AF和RI,全称Rep Invariant和Abstraction Function,译为表示不变量和抽象函数。

由于我们不能将程序内部直接暴露给客户端,所以在客户端生成一个抽象空间(不是实际存在的),在这个空间内是客户端需要的内容。

而抽象函数就是从程序内部的实例空间到抽象空间的映射。而表示不变性就相当于自变量定义域:

指一个类的实例在任何时候都满足一定的条件,保证数据的合法性和一致性。必须符合RI的规定,若运行程序时,出现某个实例不满足RI则说明设计失败,需要重新设计。

// AF(c) = 一个有限集合 {c.elements[i] | 0 <= i < c.size}
// RI: c.elements != null && 0 <= c.size <= c.elements.length
// safety from rep exposure:
//   所有域都是私有的
//   没有返回引用可变对象
public class Set {
    private Object[] elements;
    private int size;

    public Set() {
        elements = new Object[10];
        size = 0;
    }

    // 其他方法省略
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值