3.2设计规约
- 规约 前置,后置条件
- 行为等价性
- 规约的强度
1.规约 前置,后置条件
规约是客户与程序员之间达成的契约,其内容包含
前置条件:对客户的约束,使用时必须满足的条件 requires
后置条件:程序员的约束,方法结束时必须满足的条件 effects
方法前的注释也是规约(这东西可以自动生成)
---------------------------------------------------------------------------------------------------------------------------------
2.行为等价性
站在客户的角度看待,与怎样实现无关
比如说最短路径算法:无论是用迪杰斯特拉算法与弗洛伊德算法,只要求出的结果一样,就是行为等价性
---------------------------------------------------------------------------------------------------------------------------------
3.规约的强度
如果A的前置条件比B的弱,后置条件比B的强,则说明A的强度比B的强 (有一个满足,另一个也可等于也算)
A可以替换B
强的规约就是让程序员的工作更加复杂的规约
确定规约:一种输入一种输出
欠定规约:一个输入可以有多个输出 欠定规约通常有确定的实现
不确定规约:一个输入每次输出可能不一样(随机)
操作式规约, 例如:伪代码(告诉别人你怎么做)
声明式规约:没有内部实现的描述,只有“初-终”状态(告诉别人你要做)
如:伪代码