불변 개체 란?

객체 지향 프로그래밍에서, 불변 객체는 생성 된 후에 속성을 변경할 수없는 객체입니다. 반대로 대부분의 객체는 변경 가능한 객체이므로 생성 후 속성의 일부 또는 전부를 자유롭게 변경할 수 있습니다. 다양한 컴퓨터 언어는 Java, C ++, erlang, Tcl 및 scala를 포함하여 변경 불가능한 객체를 생성 할 수 있습니다.

불변 객체는 두 가지 방법 중 하나로 만들 수 있습니다. 불변으로 정의 가능한 클래스를 만들거나 불변 객체를 불변으로 명시 적으로 선언하여. 불변 클래스를 작성하는 방법은 사용되는 컴퓨터 언어에 따라 다릅니다. 언어에 관계없이 불변 클래스에는 내부 데이터를 변경할 수있는 메소드가 없어야하고 내부 데이터를 변경하는 방식으로 메소드를 변경 (즉, 재정의 또는 오버로드) 할 수있는 방법이 없어야합니다. 이것은 두 가지 접근법 중 더 복잡합니다. 반면에 변경 불가능한 오브젝트에서 변경 불가능한 오브젝트를 작성하기 위해 종종 키워드를 적용하여 오브젝트를 변경 불가능한 것으로 지정할 수 있습니다.

예를 들어, Java에서 변경 불가능한 객체 생성은 "final"키워드에 크게 의존합니다. Java에서 클래스를 불변으로 만드는 빠른 방법은 클래스와 모든 메소드 및 데이터 멤버를 final로 선언하는 것입니다. "const"키워드를 사용하여 C ++에서도 유사한 전략을 사용할 수 있습니다. 그러나 클래스 내용에 따라 이러한 방법이 최선의 방법이 아닐 수도 있습니다. 일반적으로 객체는 내부 데이터를 신중하게 유지 관리하여 불변으로 만들 수 있습니다.

위 예제와 같이 키워드를 사용하여 불변 객체를 만드는 것은 전체 클래스를 불변으로 작성하는 것보다 훨씬 쉽습니다. 그러나이 방법을 사용하면 위험이 따릅니다. 이러한 방식으로 불변 객체를 명시 적으로 지정할 때, 프로그래머는 모든 적절한 속성과 데이터가 객체에 먼저 통합되었는지 확인하는 것이 중요합니다. 불완전한 개체에 의존하는 것은 특히 필수적인 정보가없는 경우 위험 할 수 있습니다.

객체가 변경 가능하지만 변경 불가능한 데이터를 올바르게 작성해야하는 경우 변경 가능 오브젝트를 작성하려면 변경 불가능한 데이터를 초기화해야합니다. 불변 객체는 데이터 값이든 큰 객체이든 항상 불변이므로 항상 그렇게 취급해야합니다. 일반적으로 변경 불가능한 오브젝트로 변경 될 수 있지만 변경 불가능한 오브젝트는 작성된 후에 변경할 수 없습니다. 일반적으로 불변의 객체와 사본도 불변이므로 데이터 나 메모리 문제를 예방할 수 있습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?