9 L
M K
I@M K
0 ,3
. .
,3
Validation
Validation
Validation
Validation






















- 메서드에 전달된 인자의 정합성을 체크하기 위해 사용
- 일반적으로 Contract.Requries(...) 와 같은 사전조건으로 정의함으로써 

메서드가 잘못된 값을 기반으로 실행되는 것을 방지.
- 만약 사전조건을 만족시키지 못한다면, 최대한 빨리 실패해서 

클라이언트에게 버그가 있다는 사실을 알려야 한다.
- 사후조건을 만족시키는 함수는 일반적으로 Contract.Ensures 메서드를 활용
- BasicRatePolicy 메소드의 사후조건은 result 인스턴스가 ZERO보다 크거나

같으면 안된다.
- 인스턴스 변수의 상태가 올바른지를 서술하기 위해.
- 메서드에 전달된 파라미터의 값이 올바르게 변경됐는지를 서술하기 위해
- 반환값이 올바른지를 서술하기 위해
사전조건과 사후조건은 각 메소드마다 달라지는 데 반해 불변식은 인스턴스 생명주기 전반
에 걸쳐 지켜져야 하는 규칙을 명세.
- 불변식은 클래스의 모든 인스턴스가 생성된 후에 만족돼야 한다. 이것은 클래스에 정의된
모든 생성자는 불변식을 준수해야 한다는 것을 의미한다.

- 불변식은 클라이언트에 의해 호출 가능한 모든 메서드에 의해 준수돼야 한다. 메서드가 실
행되는 중에는 객체의 상태가 불안전한 상태로 빠질 수 있개 때문에 불변식을 만족시킬 필요
는 없지만 메서드 실행 전과 종류 후에는 항상 불변식을 만족하는 상태가 유지돼야 한다.

- 불변식은 생성자 실행 후, 메서드 실행 전, 메서드 실행 후에 호출돼야 한다.

- 모든 생성자의 마지막 위치와, 메서드 시작 지점, 메서드 종료 지점에 불변식을 호출하도록
일일이 코드를 작성.
Design by contract(계약에의한설계)

Design by contract(계약에의한설계)

  • 2.
    9 L M K I@MK 0 ,3 . . ,3
  • 6.
  • 7.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 20.
    - 메서드에 전달된인자의 정합성을 체크하기 위해 사용 - 일반적으로 Contract.Requries(...) 와 같은 사전조건으로 정의함으로써 
 메서드가 잘못된 값을 기반으로 실행되는 것을 방지. - 만약 사전조건을 만족시키지 못한다면, 최대한 빨리 실패해서 
 클라이언트에게 버그가 있다는 사실을 알려야 한다. - 사후조건을 만족시키는 함수는 일반적으로 Contract.Ensures 메서드를 활용 - BasicRatePolicy 메소드의 사후조건은 result 인스턴스가 ZERO보다 크거나
 같으면 안된다. - 인스턴스 변수의 상태가 올바른지를 서술하기 위해. - 메서드에 전달된 파라미터의 값이 올바르게 변경됐는지를 서술하기 위해 - 반환값이 올바른지를 서술하기 위해
  • 21.
    사전조건과 사후조건은 각메소드마다 달라지는 데 반해 불변식은 인스턴스 생명주기 전반 에 걸쳐 지켜져야 하는 규칙을 명세. - 불변식은 클래스의 모든 인스턴스가 생성된 후에 만족돼야 한다. 이것은 클래스에 정의된 모든 생성자는 불변식을 준수해야 한다는 것을 의미한다.
 - 불변식은 클라이언트에 의해 호출 가능한 모든 메서드에 의해 준수돼야 한다. 메서드가 실 행되는 중에는 객체의 상태가 불안전한 상태로 빠질 수 있개 때문에 불변식을 만족시킬 필요 는 없지만 메서드 실행 전과 종류 후에는 항상 불변식을 만족하는 상태가 유지돼야 한다.
 - 불변식은 생성자 실행 후, 메서드 실행 전, 메서드 실행 후에 호출돼야 한다.
 - 모든 생성자의 마지막 위치와, 메서드 시작 지점, 메서드 종료 지점에 불변식을 호출하도록 일일이 코드를 작성.