《数据结构与抽象:Java语言描述(原书第4版)》一P.2.2 前置条件和后置条件-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《数据结构与抽象:Java语言描述(原书第4版)》一P.2.2 前置条件和后置条件

简介:

本节书摘来华章计算机《数据结构与抽象:Java语言描述(原书第4版)》一书中的第1章 ,第1节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 罗得岛大学  新英格兰理工学院 辛运帏 饶一梅 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

P.2.2 前置条件和后置条件

前置条件(precondition)是一条条件语句,它在方法执行前必须为真。除非前置条件满足,否则不应该使用方法,也不能期待方法能正确执行。前置条件可以与方法参数的描述相关。例如,计算x平方根的方法可以用x≥0作为前置条件。
后置条件(postcondition)是一条语句,当前置条件满足且完全执行方法后,它为真。对于一个值方法,后置条件将描述方法返回的值。对于一个void方法,后置条件描述所做的动作及对调用对象的任何修改。一般地,后置条件描述方法调用产生的所有影响。
考虑后置条件有助于弄清楚方法的目的。注意,从前置条件到后置条件没有提到如何做,即我们将方法的规格说明与它的实现分离。

程序设计技巧:不能满足后置条件的方法,即使符合前置条件,也可以抛出异常。(关于异常的讨论见Java插曲2和4。)

职责。前置条件意味着保证必须满足特定条件的职责。如果在调用方法前由客户负责满足条件,则方法不必检查条件。或者,如果方法负责让条件成立,则客户不必检查它们。用语句明确谁必须检查给定的条件,这样既提高了检查的概率,又避免了重复劳动。
例如,要说明前面提到的求平方根方法,可以在方法头前面写如下的注释:
image

在这个例子中,方法假定客户要提供一个非负数作为参数。
更安全的技术是让方法承担检查参数的职责。在此例中,它的注释应该如下:
image

虽然在前面的注释中我们将前置条件和后置条件集成在一起,但也可以将它们分开。

程序设计技巧:在方法头之前的注释中充分说明每个公有方法。对于确保方法能正确执行而必须满足的条件,要说明是由方法还是由客户来负责进行检查。以这种方式,既做了检查又不会重复检查。但在调试过程中,方法应该检查前置条件是否满足。

当使用继承和多态来重写父类中的方法时,子类中的方法可能会出现与父类中的方法不一致的问题。前置条件和后置条件可以帮助程序员避免这个问题。后置条件必须适用于子类中方法的所有版本。重写的方法可以添加到后置条件中(即它能做得更多),但不能做得更少。不过重写的方法不能增加其前置条件。换句话说,它不能比基类中的方法要求得更多。

自测题3 假定类Square有一个数据域side及设置side值的方法setSide。这个方法的方法头和注释是什么?写这个时要牢记前置条件和后置条件。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: