您的位置:首页 > 其它

2015.7.4 过程抽象

2016-05-08 17:42 211 查看
过程抽象就是简称为过程。过程组合了参数抽象和规格抽象的方法。

3.1 抽象的好处

抽象具有本地性以及可修改性,本地性就是不需要知道其他任何抽象的实现而只关注一个抽象的实现,可修改行就是指能够实现一个抽象,不需要更改任何使用该抽象的其他抽象。

3.2 规格

我们可以通过证实或者非正式的规格语言来描述抽象。

规格与抽象的任何实现都不相同,这些实现基本上类似,因为都是相同的抽象,不同的就是实现方法的不同,规格是提取了其共性,可以说规格是具体实现的共性的提取,是抽象的语言描述。

3.3 过程抽象的规格

一个过程的规格是由标题和对结果的描述组成的。标题给出了过程的名称,并给出了参数的数量、顺序、类型以及返回类型,此外还列出了过程抛出的一些异常,并且,必须指明参数的名称。

规格包含至少三部分:requires,modifies,effects。requires和modifies是可选的,以注释的方式给出。

输入有两种,一种是在过程的标题中列出的参数,另一种就是通过System.in/System.out来读取的数据。

requires是约束条件,抽象就是在约束条件下定义的。过程如果是局部的,需要requires,否则,就是全局的,不需要requires,可以省略。

modifies列出了所有修改的输入的名称。

effects就是所有有效的输入的行为,什么样的输入会产生什么样的输出。

当我们在effects中阐述某个变量的变化的时候,输入是x,输出可以用x_post来表示。

在编写程序的时候最好先写标题和规格,具体的代码之后再完成。

3.4 实现过程

过程的实现必须只修改modifies中的参数,如果输入符合requires,输出必须满足effects。

3.5 设计过程抽象

未确定的抽象不一定有未确定的实现,通常实现都是确定性的。

未确定的抽象指的是满足effects的输出有很多种,而确定的实现意味着每一次的运行的输出都是确定的。

最小限度性就是指能减少限制就减少我对于参数要求的限制,使得我的过程能够更加一般化,海纳百川。

过程的属性及其实现

最小限度性:约束较少

未确定性的行为:多种满足规格的结果

确定性的实现:每次运行结果相同

一般性:一个规格能够处理比较大的一类输入

局部性最好是对应于能够确定输入能够满足的情况,比如我在当前方法又调用了另外一个方法,我现在的变量状态是已知的,那么这种情况下,局部性容易满足。但是对于公开的方法,最好使用全局方法,这样结果就是能够满足尽可能多的奇葩情况。

全部过程和局部过程

一个过程的行为对所有合法输入都是合适的,那么这个过程就是全局的,否则就是局部的。局部过程总是包含一个requires

局部过程更不安全,因此只能适用在能带来重要好处的时候。

可能的时候,应该检查requires中的条件,不能满足就尽快抛出异常。

3.6 小结

过程是从输入到输出的映射,可能修改某些输入。过程的行为由规格描述。

抽象提供了本地性和可修改性两个好处。这两个好处都是基于抽象以及其实现之间的关系。

为了描述这种抽象,我们引入了规格,描述使用了一种特殊规格语言的抽象行为。可以使形式的,也可以是非形式的,非形式的语言带有requires,modifies,effects固定结构。

理想的过程包括了最小限度性、简单性和一般性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: