전제 조건

Precondition

컴퓨터 프로그래밍에서 전제조건은 코드 섹션의 실행 직전 또는 정식 사양의 연산 전에 항상 참이어야 하는 조건 또는 술어입니다.

전제조건을 위반하면 코드 섹션의 효과가 정의되지 않으므로 의도된 작업을 수행하거나 수행하지 않을 수 있습니다.잘못된 전제 조건으로 인해 보안 문제가 발생할 수 있습니다.

대부분의 경우 전제조건은 해당 코드 섹션의 설명서에 포함되어 있습니다.전제조건은 코드 자체 내에서 가드 또는 어소션을 사용하여 테스트되는 경우가 있으며, 일부 언어에는 이를 위한 특정 구문 구조가 있습니다.

예를 들어, 요인은 0보다 크거나 같은 정수에 대해서만 정의됩니다.따라서 입력 숫자의 계수를 계산하는 프로그램에는 숫자가 정수이고 0보다 크거나 같다는 전제 조건이 있습니다.

객체 지향 프로그래밍에서

객체 지향 소프트웨어 개발의 전제조건은 계약에 의한 설계에서 필수적인 부분입니다.계약에 의한 설계에는 사후조건클래스 불변성의 개념도 포함된다.

루틴의 전제조건은 오브젝트 상태에 대한 모든 제약을 정의합니다.이러한 제약은 실행에 성공하기 위해 필요합니다.프로그램 개발자의 관점에서는, 이것은 통상적인 발신자의 계약 부분을 구성한다.그 후, 발신자는, 루틴을 호출하기 전에, 전제 조건이 유지되고 있는 것을 확인할 의무가 있습니다.호출자의 노력에 대한 보상은 호출된 루틴의 사후 [1]조건으로 표시됩니다.

에펠의 예

에펠로 쓰여진 다음 예의 루틴은 인수로 하루 중 한 시간 동안 유효한 값이어야 하는 정수, 즉 0에서 23까지를 취합니다.전제조건은 키워드 뒤에 있습니다.require. 인수는 0 이상, 23 이하여야 합니다.태그 "valid_argument:" 는 이 precondition 구에 대해 설명하고 런타임 precondition 위반 시 이를 식별하는 역할을 합니다.

    set_hours (1시간: 정수)             -- "hour" 를 "a_hour" 로 설정합니다.         요구하다             valid_filename(유효): 0 <=> 1시간 그리고. 1시간 <=> 23         하다             한 시간 := 1시간         확신해주다             시간 설정: 한 시간 = 1시간         끝. 

전제조건과 상속

상속이 존재하는 경우 하위 클래스(하위 클래스)에 의해 상속되는 루틴은 해당 전제 조건을 적용하여 상속됩니다.즉, 상속된 루틴의 구현이나 재정의도 상속된 계약에 따라 작성해야 합니다.사전 조건은 재정의된 루틴에서 수정할 수 있지만 [2]약화될 수 있습니다.즉, 재정의된 루틴은 클라이언트의 의무를 줄일 수는 있지만 증가하지는 않습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Meyer, Bertrand, 객체 지향 소프트웨어 구축, 2판, 프렌티스 홀, 1997, 페이지 342.
  2. ^ 마이어, 1997년, 페이지 570-573.