메소드는 Class의 보통 함수를 말합니다. 뭐 특별할 것 없습니다.
프로퍼티는 함수(메소드)나 변수(멤버변수)를 특별한 별명(사람이 인지하기 쉬운)으로 살짝 바꿔서 사용한다고 보면됩니다.
int m_nCountValue;
int GetCount(){return m_nCountValue;};
void SetCount (int n) {m_nCountValue = n;};
__property int Count = { read=GetCount, write=SetCount };
프로퍼티의 선언은 위와같이 하구요.
만약에 Count = 10; 이라고 사용하면 자동으로 SetCount(10) 이란 함수가 호출된다고 보시면됩니다.
그리고 int CountTemp = Count; 라고 사용했다면 int CountTemp = GetCount(); 처럼 GetCount()가 자동 호출되는 식입니다.
실제로 int Count 라는 것은 변수가 아닙니다. GetCount와 SetCount 라는 실제 함수를 호출하는 방식을 지정한거라고 보면 됩니다.
즉 GetCount 함수의 리턴 값은 int 이고 SetCount 함수의 인자 값도 int 라고 보시면됩니다.
Count 라는 것을 Read 용도로 사용할 때는 GetCount가 호출되고 Count 에 값을 쓰려고 할 경우에는 SetCount가 호출된는 것입니다.
Count = 10; 이라고할 때 실제로 10 이란 값이 저장되는 곳은 Count 가 아닙니다.
내부적으로 또다른 변수가 선언되어있고 그 변수에 값이 저장되는 것입니다.
어떤 변수에 어떻게 값을 요리해서 저정하고 읽어오는지는 GetCount, SetCount 함수를 어떻게 만드냐에 따라 달라지겠죠...
그리고 항상 함수만 사용할수 있는것이 아니라 변수를 바로 사용할 수도 있습니다.
int m_nCount;
__property int Count = { read=m_nCount, write=m_nCount};
(예로 보여드린 코드는 문법에 정확하게 맞지 않을수도있습니다. 설명을 위해 대충 작성했습니다.)
오바군 님이 쓰신 글 :
: 안녕하세요~ 늘 여기와서 진리를 깨닫고 돌아가는 초보 프로그래머 입니다 -_ㅠ
:
: 보통 TEdit 컴포넌트 하나 만들고 나서 .. F11번을 누르면 오브젝트 인스펙트 창이 나오는데
:
: 거기에 나오는 목록들이 다 프로퍼티들로 알고 있습니다. Event도 있구요
:
: 그럼 builder에는 메소드가 없나? 라는 생각이 문뜩 들더군요..
:
: 개념이 상당히 햇갈려서 여기에 질문 드려봅니다.
:
: 어디에 찾아보니..
: 메소드는 어떤 미리 정해진 함수나 기능등을 처리 하는 기능을 말하는것이며 프로퍼티는 해당 객체에 대한 속성값이다
:
: 프로퍼티는 사람으로 치면 (나이, 성별, 이름, 피부색) 등과 같은 것이고,
: 메서드는 그 사람이 할 수 있는 능력입니다. (말한다, 걷는다, 본다).
:
: 라고 써있더군요 ;
:
: 그럼 TEdit 프로퍼티에 TEdit->Text="값 입력" ; 이건 속성값만 넣어주는건가요?
:
: 제가 개념을 잘 못잡아서 좀 햇갈리는데요 ; 그냥 property =method 같은놈이다 라고 알고 있으면 될까요?;
:
: 차이점이 있다면 간단하게 어떤것인지 알려주셨으면 합니다~