黑匣子编程

什么是黑匣子

当您开始使用类和对象时,您可能会遇到术语黑盒编程。很多时候,程序员编写方法时就好像它们是黑匣子一样——程序员知道盒子里发生了什么,但所有这些实现细节对用户都是隐藏的。用户应该知道黑匣子的输入,他们应该能够预测给定输入的输出,但该输入如何转换为输出的细节可以对用户隐藏。

黑匣子编程_第1张图片

如今,我们使用的大多数技术在某种程度上都是一个黑匣子。考虑一个电视遥控器——我们可以给遥控器一些输入,比如按下“提高音量”按钮,我们可以期待一些输出,比如音量增加。但除此之外,这个过程的所有内部运作都对我们隐藏起来。作为电视遥控器用户,我们并不真正知道遥控器如何与电视通信,也不知道电视如何与扬声器连接。我们所知道的只是输入的格式和预期的输出。然后我们让黑匣子完成剩下的工作。

前提条件和后置条件

为了将其与 Java 联系起来,重要的是要考虑方法的前置条件后置条件。前提条件是必须为真才能使方法按预期工作的条件。这些前提条件应以某种方式传达给用户。

例如,为了使电视遥控器按预期工作,电视可能必须已经打开。对于 Java 示例,您可能正在编写一个将数字作为输入的函数。一个潜在的前提条件可能是该数字应该是正数。

您可以编写方法来检查该前提条件是否为真。例如,如果方法需要正数,则当方法收到负数时,可以打印错误消息。编写考虑各种不同情况的方法是一种很好的做法,但实际上,某些方法将具有您需要注意的先决条件。

同样,考虑方法的后置条件也很重要。后置条件是在调用方法后保证为真的条件,前提是满足前提条件。回到我们的电视示例,“调高音量”的后置条件是音量将增加 1。只有当先决条件得到满足时,这才是正确的。前提条件可能是“电视已打开”和“电视未达到最大音量”。

就像前置条件一样,后置条件应该传达给方法的用户。这通常是通过文档完成的。看看一些官方 Java 文档的例子。尝试查找文档中描述这些方法的前置条件和后置条件的位置。其中一些方法来自你尚未遇到的类:

  • indexOf() 来自 String 类
  • Math 类中的 pow()
  • nextDouble() 来自 Random 类

在查看本文档时,请注意,某些方法比其他方法描述了更多的实现细节。如果您想了解有关黑盒方法的更多信息,可以通过一些方法更深入地研究代码或文档。黑匣子不一定永远是黑色的——如果你真的对一种方法的工作原理感到好奇,你总能找到更多信息。但是,当您开始编写自己的方法时,请记住,至少应该明确方法的前置条件和后置条件是什么。

你可能感兴趣的:(翻译,开发语言)