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

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

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

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

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

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

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

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

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

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

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

  1. 数据结构(c语言版) 计算机科学丛书,数据结构与算法分析--C语言描述(原书第2版)(计算机科学丛书)...

    摘要: 本书讨论数据结构和算法分析.数据结构主要研究组织大量数据的方法,而算法分析则是对算法运行时间的评估.随着计算机的速度越来越快,对于能够处理大量输入数据的程序的需求变得日益急切.可是,由于在输入 ...

  2. 数据结构与算法分析Java语言描述 原书超清第3版 下载

    链接: https://pan.baidu.com/s/135hWyCK3SssLwMmeHn4PCg    提取码: 9kk7

  3. s数据结构替换子表java版_数据结构与算法分析Java语言描述(第3版) PDF和源码免费 下载...

    <数据结构与算法分析Java语言描述(第3版)>PDF和源码免费 下载 免积分下载 用户下载说明: 图书简介: 数据结构:Java语言描述(原书第3版)是国外数据结构与算法分析方面的经典教 ...

  4. 《机器学习与R语言(原书第2版)》一2.3 探索和理解数据

    本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问云栖社区& ...

  5. 机器学习与R语言(原书第2版)》一1.4 实践中的机器学习

    本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第1章,第1.4节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问云栖社区& ...

  6. java 前置零_程序员面试必考题(二十二):Java中的前置条件和后置条件

    转载自微信公众账号:开点工作室(ID:kaidiancs) Java程序中,程序员可以使用前置条件与后置条件,来控制是否执行方法及判断方法是否正确执行. 前置条件(precondition)是一条条件 ...

  7. python数据科学导论_数据科学导论:Python语言(原书第3版)

    数据科学导论:Python语言(原书第3版) 作者:(意)阿尔贝托·博斯凯蒂;(意)卢卡·马萨罗 著 出版日期:2020年02月 文件大小:48.52M 支持设备: ¥50.00 适用客户端: 言商书 ...

  8. 【第5期】终于等到你!《Effective Java 中文版》原书第3版!

    "我很希望我10年前就能拥有这本书.有人可能认为我不需要任何Java方面的书籍,但是我需要这本书."  --Java之父James Gosling 这段话出自Java之父James ...

  9. 《数据结构与算法分析—Java语言描述》pdf

    下载地址:网盘下载 内容简介 编辑 "数据结构"是计算机专业的基础与核心课程之一,Java是现今一种热门的语言.本书在编写过程中特别考虑到了面向对象程序设计(OOP)的思想与Jav ...

最新文章

  1. 你就是你自己paper最好的审稿人:宾大苏炜杰提出peer review新机制
  2. 前端 学习笔记day48 CSS介绍
  3. linus启动mysql失败_Linux下MySQL启动失败的解决一例
  4. quot;《 Serial Drivers 》by Alessandro Rubiniquot; 学习笔记
  5. 【面试必备】透过源码角度一步一步带你走近阿里
  6. linux共享库及/etc/ld.so.conf文件的应用
  7. 通过反射实现圆角ImageView
  8. 使用jsp实现文件上传的功能
  9. Netty工作笔记0058---Netty群聊系统客户端
  10. 工具类——FileUtils
  11. 图解机器学习算法(8) | 回归树模型详解(机器学习通关指南·完结)
  12. 分析数据流和绘制数据流图
  13. 阿里云携手开源中国众包平台发布百万悬赏项目
  14. python input隐藏输入_python输入input
  15. 汇编指令中 Rd Rm Rn Ra 的 具体含义 ?
  16. 大数据时代最全的医学公共数据库合集整理
  17. android 个人云存储,个人云存储app-个人云安卓版-地之图下载
  18. 图片怎么转换为jpg格式的?照片如何在线转格式?
  19. js 跳转到指定位置 高德地图_JS控制div跳转到指定的位置的几种解决方案总结
  20. RISC-V扩展指令示例

热门文章

  1. CAD转Excel,如何快速转换呢?
  2. 政府采购的质疑与投诉
  3. 【python 笔记/小白快速入门python】python浅谈(一)犹抱琵琶半遮面
  4. 我的性格分析和对未来职业的规划
  5. 记一次 关于Android studio 编译报错compileDebugJavaWithJavac FAILED
  6. JVM垃圾回收器-CMS并发标记清除
  7. 计算机教程打字方法,电脑快速打字方法教程
  8. 主机配置文件(HostProfiles)的创建与应用
  9. raid ahci模式哪个好_一机多用的RAID磁盘阵列 QNAP TR-004体验测评
  10. 改oracle值,Oracle修改column值