이번 IDL 8.0부터는 객체 지향 프로그래밍에 있어서 새로운 문법이 도입되었습니다. 좀 더 현대적인 프로그래밍 언어다운 모습을 보이기 위한 일환이라고 생각되는데, 아마 C나 Python 등과 같은 다른 언어들에서는 이미 사용되고 있는 문법들인 것으로 압니다. 정리해서 소개해보죠.
1. 객체의 생성
객체를 생성할 때 항상 OBJ_NEW라는 함수를 사용해왔습니다. 예를 들어 플롯 객체를 생성한다고 하면 항상 다음과 같은 방식을 사용해왔죠.
oPlot = OBJ_NEW('IDLgrPlot')
하지만 8.0 버전부터는 다음과 같이 클래스 이름 자체가 함수가 될 수 있습니다.
oPlot = IDLgrPlot()
물론 필요한 인자들은 ()안에 다 넣으면 됩니다. 다음과 같이 말이죠.
data = RANDOMU(seed, 100)
oPlot = IDLgrPlot(data)
2. 메서드 호출
생성되어 있는 객체에 대하여 메서드를 호출할 경우 다음과 같이 항상 "->"를 사용해왔습니다.
oPlot -> SetProperty, COLOR=[100, 100, 100]
이제는 그냥 "."만으로도 해결이 됩니다.
oPlot.SetProperty, COLOR=[100, 100, 100]
3. 객체의 제거
객체를 제거할 때 항상 OBJ_DESTROY라는 명령을 사용해야 했습니다.
OBJ_DESTROY, oPlot
이제는 그 대신 Cleanup 메서드를 바로 사용할 수 있습니다.
oPlot.Cleanup
4. 사용자 정의 객체의 속성
IDL에서 기본적으로 지원되는 클래스가 아닌 사용자 정의 클래스에 한하여, 속성의 설정(SetProperty) 및 추출(GetProperty) 메서드를 적용하는데 있어서 "."만으로도 해결이 됩니다.
myObject = MyClass()
PRINT, myObject.COLOR
myObject.COLOR = [255, 0, 0]
아쉬운 점은 이 기능이 아직은 사용자 정의 객체에만 한정되어 있다는 것입니다. 따라서 다음과 같은 방식으로는 아직 불가합니다.
oXAxis = IDLgrAxis(0)
oXAxis.RANGE = [0, 100] -----> 에러!!
아쉽지만 다음 버전에서는 가능해지길 기대해봅니다. 이게 가능해야 진짜 다른 언어들만큼 사용이 간편해지겠지요.
이상의 내용은 앞서 언급했듯이 IDL 8.0 버전부터만 사용 가능합니다. 물론 기존의 문법도 그대로 건재합니다. 따라서 혹시나 이전 버전의 IDL과 혼용해야할 경우에는 기존의 문법을 사용해야 함을 염두에 둬야 하겠지요.
'IDL > Object Graphics' 카테고리의 다른 글
Object Graphics in IDL [26] (0) | 2011.02.22 |
---|---|
Object Graphics in IDL [25] (0) | 2011.02.14 |
Object Graphics in IDL [24] (0) | 2011.02.05 |
Object Graphics in IDL [23] (0) | 2011.01.31 |
Object Graphics in IDL [22] (0) | 2011.01.24 |