3

これは非常に一般的な考えですが、この例では C# を使用しましょう。

とすれば

  • 私は使い捨てクラスを持ってFooいます。つまり、実装していますIDisposable
  • Fooが呼び出されるまでfalseであるブールフラグdisposedを持ち、その後はtrueになります。Dispose
  • Foothrowsのすべての public メソッドは、呼び出されたときにtrueObjectDisposedException場合。disposed

この発言は

Fooを除くのすべてのメソッドは、破棄された のインスタンスで呼び出されたときにDisposeをスローします。ObjectDisposedExceptionFoo

の不変量をFoo記述する

4

2 に答える 2

2

いいえ。

これは、クラスのすべてのメソッドに共通する一連のルールです。不変条件はメソッドのルールではありません。

契約による設計は、契約の次の部分を定義することで構成されます。

  • メソッドの前提条件
  • メソッドの事後条件
  • クラス不変

あなたが説明しているのは、メソッドの事後条件です。それらは各関数のコントラクト(もちろんクラスのコントラクトの一部です)に属しますが、クラス不変条件には属しません。

于 2012-01-05T10:06:12.127 に答える
0

不変式ではありません。オブジェクトの状態に関するステートメントです。IMO、あなたが説明したのは、破棄メソッドの事後条件とすべてのメソッドの事後条件です。

于 2012-07-05T09:03:27.473 に答える