지식은 공유되었을 때 그 힘을 발휘한다.



AutoCAD ActiveX 맛보기 강좌(6)

개체/속성/메서드
저희가 처음 만든 매크로는 단 네줄입니다. 단 네줄의 매크로를 가지고 몇칠을 울궈먹는다고 하시는 분들도 계실지 모르지만 실제 코드의 내용을 배우는 것보다 VBA의 환경과 개념을 먼져 알아야 한다는 걸 말씀드리고 싶습니다. 그럼 4줄짜리 매크로를 다시한번 볼까요? 이쯤되면 너무 많이 봐서 외워지지 않았을까요? ^^

Sub Macro1()
    ActiveCell.FormulaR1C1 = "123"
    Range("A2").Select
End Sub

어제까지 Acitvecell에 대해서 말씀드렸고 오늘은 그럼 Range로 시작하는 줄을 설명해야겠습니다. Range는 엑셀을 다루는데 있어서 가장중요한 개체입니다. 개체? 개체가 무었일까요? 여러분들은 OOP라는 말을 들어보신 적이 있을 것입니다. fortran으로 프로그램을 짜던세대는 C가 나오면서 pointer란 놈 때문에 헷갈렸고, c++이란 놈이 나오면서 OOP라는 말을 수도 없이 듣게 됩니다. OOP 란 Object Oriented Programing의 약자일겁니다. 객체지향프로그래밍이라고 우리나라말로 풀이하는데, 여기서 말하는 Range란 놈도 Object입니다.

VBA나 VB, c++등 요즘 프로그램에서는 이 OOP개념을 꼭 알고 있어야 합니다. 예전의 도스프로그램과는 달리 윈도우 프로그램에서는 객체를 중심으로 작업을 하게 됩니다. 어떤 작업을 하기 위해서 개체를 선택합니다. 예들 들어서 현재 셀에 123을 입력하려면 일단 현재셀을 선택하여야 합니다. 현재셀 개체는 ActiveCell이지요.

OOP에서는 보통 Object, Property, Method, event 등의 용어를 많이 사용합니다. object라는 녀석은 개체라는 것이고 property라는 녀석은 말그대로 속성입니다. 그리고 method는 그냥 메서드라고 합니다. 이 세녀석이 OOP의 삼총사 인데, 예를 들어서 설명하자면 스타크랩트게임에서 내가 공격을 한다고 생각합시다. 일단 병사를 골라야겠지요? 그 다음 무장을 시킵니다. 군복을 입히고 무기를 가진상태로 만드는 거죠. 그리고 그녀석에게 어디로 가서 싸우라고 명령을 내리겠지요. 여기서 병사를 object로, 무장상태를 property로, 녀석이 공격하는 것을 method로 생각하면 됩니다. 비유가 적절했는지 모르겠네요.

property는 object의 상태를 method는 object의 행동으로 생각하면 될 것 같습니다. 참 설명하기 힘듭니다. 이렇게 윈도우 프로그램은 object를 선택해서 그녀석의 상태을 바꾸고 행동을 시키는 것으로 생각하면 됩니다. 말하자면 "야 김일병(object) 너 군복입고 소총소지한 생태로(property) 00진지로 이동해(method)" 라고 명령을 내리는 것이나 마찬가지 입니다.

그렇다면 우리가만든 4줄짜리 매크로에서 object, method, property를 찾아볼까요? 첫줄의 ActiveCell과 둘째줄의 Range()가 개체입니다. 역시 객체지향답게 제일먼져 나오죠 object는 항상 제일먼져 나옵니다. 그 다음 FormulaR1C1이 property입니다. 그리고 둘째줄의 Select가 method입니다. 어떤가요? 상태(property)와 행동(method)의 개념이 맞아떨어지나요? 첫줄을 실행하기 전에는 ActiveCell의 상태는 아무것도 들어있지 않은 상태였는데 첮줄에서 명령으로 123이 들어있는 상태로 바꾼것입니다. 그리고 둘째줄을 실행하기 전에는 ActiveCell이 선택되어 있었는데 두번째줄 명령으로 A2로 이동하도록 한것입니다.

중요한 개념이지만 그마만큼 설명하기 힘든부분이네요. 앞으로 프로그래밍을 해나가다 보면 조금씩 조금씩 이해가 될 수도 있을 것이라 생각됩니다. 앞으로도 수없이 나오는 것이 object, property, method일테니까 지금 이해가 안간다고 넘 슬퍼하거나 노여워하지 마시구여~

오늘은 여기서 마치기로 하고 내일 계속하도록 하겠습니다.



dolljong@dreamwiz.com