IDL/Object Graphics

Object Graphics in IDL [06]

이상우_idl 2010. 8. 25. 02:34
728x90
반응형

객체의 속성 변경 (Modifying Object Properties)


일단 생성된 객체는 인위적으로 제거되기 전까지는 얼마든지 그 세부 속성에 대한 변경이 가능하다. 각 객체는 클래스별로 다양한 종류의 세부적인 속성들을 갖는다. 이러한 속성들을 Object Graphics에서는 Property라고 부른다. 지난 글에서 Method를 '메서드'라고 영문발음 그대로 우리말로 표현을 했는데, 이 Property는 그냥 '속성'이라는 표현을 사용해보려고 한다.

예전에 축 객체를 생성하는 예제에서 축의 범위를 RANGE라는 키워드를 통하여 정의했던 것을 상기해보자.  이것도 IDLgrAxis라고 하는 클래스 기반의 객체가 갖는 여러가지 속성(Property)들 중 하나이다. 이는 마치 Direct Graphics에서 명령에 부가되어 사용되는 키워드와 같은 역할을 한다고 보면 된다. 다음은 IDLgrAxis 클래스에 대하여 정의되어 있는 속성들의 목록을 IDL 도움말에서 찾아본 것이다. 원래 더 많으나 중간에 끊은 것이다.

그리고 IDLgrPlot 클래스에 대하여 정의된 속성들의 목록은 다음과 같다. 이것은 전체 목록이다.

원래 Direct Graphics에서도 그래픽 관련 명령에 붙는 키워드들의 종류가 많기 때문에, 위의 두 경우가 특별히 많은 것은 아니다. 다만 객체 클래스에 대하여 정의된 속성들의 이름을 보면 Direct Graphics에서는 보지 못하던 생소한 개념의 것들이 많이 존재한다. 이런 것들은 차차 필요할 때 익히면 된다. 지금부터 각 클래스별로 정의된 모든 속성들을 일일이 다 머릿속에 담으려 괜한 노력을 할 필요는 없다.

Object Graphics에서는 이미 객체가 구현된 상태에서도 각 객체에 대한 속성을 추출하여 알아낸다든지 또는 원하는 다른 값으로 그 특성을 변경하는 것이 즉각적으로 가능하다. 그래서 객체 생성시 정의되었던 속성값을 나중에 다른 값으로 변경하는 것이 얼마든지 가능하고 그 변경사항은 그 객체에 한해서만 즉각적으로 반영되게 할 수 있다. 즉, 그 반영된 결과가 바로 내 눈에 보이게 할 수 있다는 뜻이다. 이와 같은 작업은 이전 게시물에서 언급되었던 SetProperty, GetProperty와 같은 메서드를 사용하여 이루어진다.

예를 들어, 이미 생성되어 있는 myAxis라는 객체에 대하여 축의 범위값이라는 속성을 알아내고자 한다면, 다음과 같은 문구를 사용한다.

myAxis -> GetProperty, RANGE=rng

이와 같이 맨 앞에는 대상이 되는 객체의 이름을 적고, 그 다음에는 마치 화살표처럼 생긴 ‘->’라는 심볼을 사용한 다음, 사용될 메서드의 이름을 적고, 이 메서드에서 활용 가능한 키워드를 적어준다. 위의 경우에는 myAxis라는 객체로부터 RANGE라는 속성을 추출하여 그 결과를 rng라는 이름의 변수에 저장하라는 의미가 된다. 여기서 사용된 메서드의 이름인 GetProperty는 말 그대로 속성을 가져오라는 의미를 갖는다.

그러면 SetProperty는 이와는 반대로, 이미 생성되어 있는 객체의 속성을 다시 변경하고자 할 때 그 변경된 속성을 적용하라는 의미임을 알 수 있다. 이 myAxis라는 객체가 처음에는 [0, 20]이라는 범위를 갖도록 선언되었지만, 마음이 바뀌어서 [-20, 20]이라는 새로운 범위를 갖도록 하고자 한다면 다음과 같은 문구를 사용하면 된다.

myAxis -> SetProperty, RANGE=[-20, 20]

이와 같은 방법을 사용하면, 이미 생성되어 있는 객체에 대해서도 나중에 얼마든지 그 속성을 바꿀 수 있다. Direct Graphics의 경우, 이와 같이 Axis의 속성을 변경하려면, 키워드의 값을 바꾸고 그 명령을 다시 실행해야 한다. 그러면 그 plot을 처음부터 다시 그리게 되고, 그래야만 속성 변경의 결과가 가시적으로 나타난다. 하지만 Object Graphics에서는 하나의 속성을 바꾸려고 전체 그림을 다시 그릴 필요가 전혀 없다. 위와 같이 SetProperty 메서드를 사용하면 해당 속성만 살짝 바꾼 모습을 볼 수 있다.

단, 한가지 유의할 것은 각 클래스별 속성들 중에서는 처음 생성시에만 설정이 가능하고 나중에는 변경이 불가능한 속성도 있을 수 있다. 이러한 속성이 어떤 것인지를 확인하려면, IDL 도움말에서 해당 클래스에 관한 내용을 살펴보면 된다. 속성 하나하나에 대한 설명을 IDL 도움말에서 보면 다음 그림과 같이 항상 Get와 Set이라는 문구 옆에 YES 또는 NO라고 적혀있는 것이 보이므로, 이를 통하여 구분이 가능하다.


반응형

'IDL > Object Graphics' 카테고리의 다른 글

Object Graphics in IDL [08]  (0) 2010.09.16
Object Graphics in IDL [07]  (0) 2010.08.28
Object Graphics in IDL [05]  (0) 2010.08.20
Object Graphics in IDL [04]  (0) 2010.08.14
Object Graphics in IDL [03]  (0) 2010.08.10