前提条件和后置条件的说明?

时间:2014-08-24 05:54:45

标签: c# post-conditions

我的最新作业要求我遵循以下标准

  

"所有方法都有明确的后置条件和带参数的后置条件   先决条件"

我已阅读了一些试图解释前/后条件的网页,但似乎可以掌握它们,有人可以向我解释它们是什么,它们的用途以及如何编写它们?

由于

(我正在学习的语言就是C#)

3 个答案:

答案 0 :(得分:4)

在输入方法之前,前提条件必须为true,否则合约无效。 退出方法后,postcodition应该为true。 对不起,我不知道C#,但如果你了解Java,这个选择排序的例子可能会有所帮助。 例如:

public static void selSort(int[] a, int b) {
    //Pre-condition: array a is not null and size of unsorted section is bigger than 1.
    for(int unsortSz = b; unsortSz >1; unsortSz--) {
        int max = 0;
        for (int p = 1; p < unsortSz; p++){
            if (a[p] > a[max]){
                max = p;
            }
        }

        //Post-condition: max is the position of largest element in unsorted part. 

        // now just swap the last element in unsorted part with max
        temp = a[unsortSz-1];
        a[unsortSz] = a[max];
        a[max] = temp;
    }
}

答案 1 :(得分:3)

这是代码合同的一部分。输入方法或属性时,应满足前提条件。而后置条件是方法或属性代码退出时的期望。来自MSDN

  

前提条件指定调用方法时的状态。他们是   通常用于指定有效的参数值。所有成员   前提条件中提到的必须至少与   方法本身;否则,可能无法理解前提条件   一个方法的所有调用者。

     

后置条件是方法终止时的状态合约。在退出方法之前检查后置条件。   失败后置条件的运行时行为由   运行时分析器。

另请查看这篇优秀文章 Preconditions, Postconditions: Design by Contract for C#

答案 2 :(得分:1)

调用方法之前的条件称为预编码,如方法名称,参数类型和参数数量等。后置条件是方法结束时的条件,如返回类型为float的方法必须返回浮点数不是int等等。