软件构造心得(9):spec、RI、AF、A之A及系列总结--我们不过也是ADT

13 篇文章 2 订阅
11 篇文章 1 订阅

A(Abstract field)

A是spec中涉及到的抽象变量,就是我们通过R、RI、AF最后映射的最终目标,也是我们费力建立这套流程的初心。A即一个抽象表达的区域,既源自于我们的spec的最初的目的,又是由RI解释而来,是我们努力的结果,具有高度抽象化的特点。

书写要求

我们需要在implement的过程中写下RI AF Safe from rep exposure这三个部分。
RI:明确要求,以及为什么这么限制,这么限制是否是有效的。(为什么它这么约束,为什么结合上你的AF之后具有完备性)

The job of the rep invariant is to explain precisely what makes the field values valid or not.

AF:映射具体是怎么完成的,要落实到类似于表达式的严格层面上去。

– The job of the abstraction function is to define precisely how the concrete field values are interpreted.
– As a function, if we take the documented AF and substitute in actual (legal) field values, we should obtain out a complete description of the single abstract value they represent.

Safe from rep exposure:自证清白,把你的所有要设计的已经设计好的接口的输入输出、所有field的变量全部都复述一遍,反复检查到底会不会造成内部信息的泄露和修改。

系列小结

好啦,我们现在看一下整个的流程。我们首先达成了一个和client的契约与合同:spec,其中限制了client的输入和implement的返回输出,其中涉及了很多抽象的元素;之后,我们将这个抽象的东西一步步落实,作为程序员,在implement的过程中,我们使用R->RI->AF->A的流程将抽象的数据和我们现有的数据类型映射建立联系,表达出来。

ADT核心在于其结构上的方法,也就是所谓的运算,以所具有的方法来理解ADT是一个良好的理解方式。从抽象角度来看,所有这些无非就是抽象集群之间的变化。而我们做的,其实就是在不让外界了解到任何内部的结构,不让外界获取或者修改内部任何信息的条件下,实现了现有结构和抽象集群及其方法的一一对应,将其表达。

类比理解,笔者的感慨

spec到最后实现的ADT,是用抽象实现抽象的过程,他们的关系既像那些家庭里面扛下一些重担,给孩子外表光鲜的面容的父亲做下的许诺;也像极了爱情中,一方对另一方的求全责备,难以设身处地,却仍然得到的满足。
尽情许诺吧。每个人都是一个某个人的造梦者每个人也都是某个人的圆梦人。

可能从我们的祖先在山洞里将钻木的火苗留下,用草垛围起不让他熄灭的的那一刻起,世界就开始了他的层层封装吧。从跳跃的电子到迸射火光的希望,从摩擦的齿轮到隆隆的机械的争抢,从轻轻转动的纤细磁臂到高压作业的电压计的稀松平常,从单晶硅片的电路到超级算力下带来的信息充斥的迷惘。

我们于是也将以前的自己封印在了过去的躯壳,我们带着将过去包装的万无一失的自己,再看不到曾经的点滴。

不相信眼泪,毕竟,rep对于除了你以外的人,没有意义,(想苦诉衷肠却只会rep exposure)。

总之祝好,希望您也是field里面有属性的ADT

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值