무의미한 클래스는 무엇입니까?
객체 지향 컴퓨터 프로그래밍 및 디자인에서 클래스 불변은 객체 인스턴스가 유효한 상태에 있는지 여부를 정의하는 데 사용할 수있는 일련의 규칙입니다. 설계 관점에서 클래스 불변은 객체 내의 데이터가 적절한 기능 상태로 고려되어야하는 경계 집합입니다. 클래스 불변량은 디자인 문서 또는 소스 코드 주석으로 정의 될 수 있거나 일부 프로그래밍 언어에서는 실행 가능한 컴퓨터 코드로 직접 구현할 수 있습니다. 코딩 된 불변량 및 어설 션을 사용하는 프로그램은 불변 조건이 충족되지 않을 때 프로그램이 실행을 중단하거나 다양한 오류를 던질 수 있습니다. 표준 오류 확인과 달리 클래스 불변은 일반적으로 클래스의 내부 구현이 작동하는지 확인하기 위해서만 사용되며 일반적으로 공개 문서 또는 프로그래밍 인터페이스에 나열되지 않습니다.
매우 기본적인 수준에서 클래스 불변은 본질적으로 어설 션 모음입니다.수업을 위해. 간단한 용어로 다시 주장은 클래스 상태의 일부를 점검하고 프로그램 실행이 계속되도록 True로 평가 해야하는 진술입니다. 어설 션의 한 예는 주어진 정수가 항상 1에서 10 사이인지 확인하는 진술입니다. 클래스 불변량을 사용하면 객체가 보유한 데이터의 모든 관련 데이터에 대해 어설 션이 평가되어 객체의 모든 데이터가 정의 된 범위 내에 있는지 확인합니다.
.많은 경우에, 클래스 불변을 사용하는 것은 표준 오류 점검과 매우 유사하며, 변수는 사용 가능한 경계 내에 있거나 무효가되지 않도록 변수를 측정합니다. 그러나 클래스 불변성 사용과 표준 오류 검사의 차이점은 불변량과 어설 션이 코드에 본질적인 결함이 없으면 발생하지 말아야 할 오류를 포착하는 데 주로 사용된다는 것입니다. 또 다른 차이점은 Th입니다표준 오류 검사에서는 복구 및 프로그램 제어 흐름의 변화가 포함되는 경향이있는 반면, 불변 실패의 결과는 프로그램 종료 여야합니다. 클래스 불변 점검이 실패 할 때 대부분의 프로그램이 종료되는 이유는 객체가 손상된 상태에 있고 설계 관점에서 설계 계약을 준수하는 데 필요한 전제 조건과 사후 조건을 충족 할 수 없기 때문입니다.
.암시 적으로 정의되는 객체 지향 프로그래밍 언어에서 클래스 불변의 속성 중 하나는 불변이 모든 서브 클래스에 의해 상속 된 메커니즘이라는 것입니다. 이는 서브 클래스가 상위 클래스에서 수행되는 변하지 않는 검사를 재정의하지 못하게합니다. 궁극적으로 이것은 서브 클래스가 슈퍼 클래스로 설정된 설계 계약을 중단 할 수 없다는 것을 의미합니다. 이는 예측할 수없는 결과 또는 찾기 어려운 프로그램 오류를 유발할 수 있습니다.
.