유니티프로젝트에서 점수를 관리한다고 생각해보자.
PointManager 클래스와 TestPoint클래스를 선언하고
TestPoint클래스에서 PointManager의 점수를 조작하는 예시이다.
점수는 음수이거나 99999와 같은 도달 불능한 수가 점수가 될 수 없다.
pointManager.point = -50;
pointManager.point = 99999;
하지만 이와 같이 점수를 -50점이나 99999와
같은 도달 불능한 값을 넣어준다고 하여도 그대로 적용 될 수 밖에 없다.
이를 방지하기 위해서 조건문과 함수를 통해서 들어오는 값을 통제하면 다음과
같이 코딩할 수 있다.
PointManager의 필터링해주는 SetPoint함수와, 점수를 가져오는 GetPoint함수를 구현한 뒤에
TestPoint클래스에서는 이와 같이 점수가 될만한 필터링된 값을 가져올 수 있다.
위 방식대로 함수를 통해서 구현은 가능하지만 심리적으로 부담감이 생긴다.
그런 우리를 위해 변수처럼 보이지만 사실 내부적으로는
함수가 구현할 수 있는 Property라는 것이 있다.
프로퍼티를 통해 구현했으니 이제 클래스 외부에서 점수를 조정해보자.
디버그 콘솔창을 확인해보면 잘 적용되었다.
프로퍼티는 클래스외부에서 변수처럼 보이지만 클래스 내부에는 get,set 으로 구현된 '함수'이다. set 함수를 통해서 원하는 범위의 값만 입력될 수 있도록하여 디펜시브한 구현이 가능하다. 이외에도 set을 아예 선언하지 않으면 클래스 외부에서는 값을 바꾸지 못하거나, 접근제어자를 protected나 private으로 설정하면 자식 클래스혹은 함수 내부에서만 값을 바꿀 수 있다.