닷넷에서 프로퍼티

요즘 닷넷 코딩에 대해 책을 읽고 있는데.
요 부분 보면서 이해가 되질 않았다.

객체지향에서 데이터 멤버에 직접 접근해서 작업을 하는게 좋지 않다 라는 원칙이 있는데.
어째서 이건 그 작업을 할려고 있는거란 말인건가.

뭐 클래스로 Private 속성 멤버변수를 만들어 놓았더니 그 멤버 변수 포인터 값을 넘기는 외부로
넘겨서 작업하게 만드는 사람도 봐서 그다지 놀랍지도 않지만 -_-;;

.NET 프레임 워크에서 제공하는 프로퍼티를 사용하면 사용자는 마치 멤버변수에 직접 대입해서
쓰는거 처럼 보이지만 실제로는 get/set 함수에 자동으로 연결해서 작업하게 하는것이다.

Managed C++에서는 두가지 프로퍼티가 존재한다고 한다.
scalar와 indexed

scalar
는 get/set 함수를 사용하여 값에 접근하는 방식이고

__gc class Human{
	int age;

	public:
	__property int get_age(){return age;}
	__property int set_age(int n){age = n;}
}

int _tmain(void)
{
	Human * pMan = new Human();
	pMan->age = 18;
}

이런 식으로 사용한다.

indexed는 배열의 []를 사용하는거랑 거의 흡사하다.
내용은 위의 scalar 프로퍼티와 비슷하지만

__gc class Bank{
	int acount[100];    //예를 들기 위한거니 태클걸지 마쇼

	public:
	__property int get_acount(long n){return acount[n];}
}

int _tmain(void){
	Bank * pB = new Bank();
	int ac =  pB->acount[3];
}

뭐 대략 이렇게 쓴다.
개념은 대충 이렇게 돌아가더군.
실제 돌리면 뱅크 어카운트에 암것도 쓰지 않았으니 쓰레기 값이 나올지 모르겠군.

크리에이티브 커먼즈 라이선스 Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.