问题描述
我目前正在研究数据结构和面向对象的契约,尤其是 Java。
我想知道大小受限堆栈的类不变量是什么。如果我正确理解了不变量的概念,那么这个不变量必须在整个程序执行过程中都为真,才能证明程序的正确性,对吗?
举个例子,让我们假设这个大小受限的堆栈包含数据类型 Person 的元素。我现在对不变量的想法是:
assert limitNotReached();
limitNotReached() 如果尚未达到堆栈的最大大小,则返回 true,否则返回 false。
这是一个很好的不变量还是有人有更好的想法/改进建议?
解决方法
数据结构是展示类不变量概念的一个非常糟糕的选择。它是一种数据结构,其中包含事物,但本身并不是“事物”,因此没有特别有意义的不变式。
一个更好的例子是一个 Car 类,它有一个不变的条件,即它的燃料水平永远不会为负。