3

이것은 매우 일반적인 생각이지만이 예제에서는 C#을 사용합니다. 이 문장을 클래스 불변으로 간주 할 수 있습니까?

내가 일회용 클래스 Foo,

  • 것을 감안할 때, 그것은 IDisposable을 구현합니다.
  • Foo사실의 후, Dispose까지 거짓 가 호출되는 부울 플래그 disposed 있습니다.
  • Foo의 모든 공용 메서드는 disposed인 경우 인 경우 ObjectDisposedException 인 경우 throw됩니다.

배치 된 Foo의 인스턴스에서 호출 할 때 Dispose 제외하고 ObjectDisposedException가 발생합니다

Foo의 모든 방법이 문장을합니까.

Foo의 불변 식을 설명합니까?

답변

2

이것은 클래스의 모든 메소드에 공통된 규칙 세트입니다. 불변량은 메소드의 규칙이 아닙니다. 계약에 의해

디자인은 계약의 다음 부분을 정의하는 단계를 포함한다 :

  • 방법의 전제 조건 방법 사후 조건은 무엇을 설명하는

  • 클래스 불변
  • 방법의 사후. 그것들은 각 함수의 계약에 속하지만 (클래스의 계약의 일부 임) 클래스 불변식이 아닙니다.

  • 0

    그것은 불변 적이 아닙니다. 그것은 대상의 상태에 대한 진술입니다. IMO, 당신이 설명하는 것은 처분 방법의 사후 조건과 모든 방법의 사후 조건입니다.

    관련 문제