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

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

发布了10 篇原创文章 · 获赞 11 · 访问量 1203

猜你喜欢

转载自blog.csdn.net/weixin_43197820/article/details/105204113
今日推荐