Life Archive
Published 2023. 9. 25. 12:51
[CS] Getter Setter 게임 개발 학습/CS

OOP로 개발을 하다보면 캡슐화가 매우 중요하다.

특히 게임개발을 하다보면 데이터 하나하나가 매우 중요한데

이런 데이터를 캡슐화하지 않게 되면 치명적인 오류를 발생시킬 수도 있다.

(게임의 의도대로 진행이 안된다던지 등의 이슈)

 

그래서 한 클래스 내부에서 데이터를 Private 으로 설정하여 제한된 접근을 생성하며 캡슐화를 한다.

하지만 게임 로직 상 값이 수정돼야할 상황이 종종 발생하는데

이 때, Getter/Setter를 이용하여 좀 더 안전하게 값을 수정한다.

    protected static _language = Application.systemLanguage;

    // getter setter
    public static get Language() {
        
        if (this._language === 23) {
            return 'Korean';
        } else if (this._language === 6) {
            return 'Chinese';
        } else if (this._language === 22) {
            return 'Japanese';
        } else {
            return 'English';
        }
        return 'English';
    }

위 코드에서 게임 언어를 Application.systemLanguage에서 받고 protected로 보호했지만,

다른 클래스에서 사용할 때 데이터를 가공해야 했다.

_language는 return 값이 number고 어떤 number가 어떤 언어를 의미하는지 매번 확인하는 게 아닌,

string으로 변환하여 사용하는게 훨씬 편리하기 때문이다.

 

위와 같이 하면 캡슐화를 하면서 동시에 외부에서는 원하는 타입의 데이터,

혹은 위 코드에서 사용은 안했지만 set으로 변경하여 사용할 수 있게 된다. 

 

물론 Setter는 내부에 조건을 사용하여 원치 않는 에러나 결과가 나오지 않도록 하기 위해 종종 사용된다.