Using AS 3.0 Getter Setter

방금 양키옹아들 블로그에서 발견한 킹왕짱 놀라운 팁 ... (지극히 주관적으로 놀랐음 ..)

 

어느 클래스에 다음과 같이 선언된 멤버 필드가 하나 있다고 합시다.

일반적으로 멤버 변수는 private 으로 그리고 Getter, Setter는 public 으로 선언하는게 OOP 캡슐화를 지켜준다 할 수 있을 것입니다.

 

Java Eclipse 는 멤버 변수 드래그 하고 오른쪽 클릭 한다음에 getter setter 선언하기 하면 자동으로 소스가 만들어집니다만,

Flex는 왜!!!! 없는것이란 말인가... 다 타이핑 하자니 멤버 필드가 한두개도 아니고 ... 이건뭐 타이핑 노가다도 아니고 ...

따라서 전 지금까지 귀차니즘으로 인해, 그냥 외부에서 접근할 필요가 있는 변수는 public 으로 선언하고 걍 씁니다 ... -_-;;

(아직까지는 아~~ 무 문제 없었습니다만, 프로젝트가 커지면 아니되겠죠 .. )

 

그런데, 오늘 유유히 여느 이름긴 양키 형 블로그에 들어갔다가 엄청난 것을 발견했습니다.. ㅠ_ㅠ쥘쥘..

 

자자.. Adobe 에서는 다음과 같이 변수를 선언할 것을 추천한다고 합니다. 무엇이냐 하니..

 

// 변수 명 앞에 _ 를 붙여줍니다. (언더바)

private var _tempVars:uint;

 

// 그리고 다음과 같이 getter 와 setter를 선언해줍니다.

public function get tempVars():uint

{

    return this._tempVars;

}

public function set tempVars(temp:uint):void

{

    this._tempVars = temp;

}

 

이렇게 선언 해놓으면 다른 외부 클래스에서 지금 만든 클래스의 멤버 변수 _tempVars에 접근할때

객체인스턴스.tempVars 로 접근하면 알아서 getter와 setter를 찾아서 값을 얻어오고, 값을 설정한다는 사실입니다 !!!!!!!!!

오마이갓~~~ 바로 테스트 해봤드랬습니다.

Flex 에서는 더욱더 유연하게 이 구조가 사용됩니다. Component 사용할때 객체를 바인딩 할때도 객체인스턴스.tempVars 로 접근하면,

그냥 자동뽕으로 알아서 getter 와 setter를 호출한다는 사실 !!!

아놔 .. 이걸 왜 이제 알앗....-_ㅠ;;

OOP의 캡슐화를 지켜줌과 동시에 편리하게 프로그래밍 할 수 있게 해주는 엄청난 사실 !!!

앞으로 클래스 만들일이 있으면 적극 사용해야겠습니다.

 

원문

ActionScript enables you to declare some behind-the-scenes functions that will execute when ever you attempt to access a property of a class. These are called custom set and get functions. In the function, you will place the keyword of either get or set in your function declaration that has the same name as the property you are trying to mask. Also, you will change the property to be a private variable that is named differently than before. It is recommended that you prefix it with an underscore. The three parts will follow this brief structure:

private var _insVar:uint;

public function set insVar(qty:uint):Void

public function get insVar():uint

Posted by 커널제로

본 블로그는 페이스북 댓글을 지원합니다.

,