키스맥 - 4th Dimension 매킨토시 전문 웹 매거진 웹진

  + 파일메이커 기초편
  + 4th Dimension
  + 리얼베이직
  + OS X 10.3
  + 홈페이지 만들기
  + 포토샵 강좌
  + 디카 완전정복
  + 실무로 배우는 Quark
  + MLayout
  + iPod 강좌
  + html 강좌
  + 간단매뉴얼&팁
  + 5세대 iPod 강좌
  + iTunes 한 컷 강좌
  + iPod 한컷강좌
            


Chapter20. 메소드(Method)의 또 다른 사용법 -1-


지난 시간 19과에서는 메소드(Method)의 실제 사용법 1~2번째 방법에 대하여 알아보았으나, 이번 시간에는 메소드(Method)의 또 다른 사용법에 대하여 살펴보겠습니다. 아마도 메소드(Method)를 이용하는 방법이 조금 더 체계적이고 약간 더 확장된 인상을 받으실 것입니다. 그리고 오늘의 학습 내용을 마치신 다음에는 꼭 한번 19과의 내용과 비교해보시고 그 차이점을 익혀두시기 바랍니다. ^^*

아래의 내용은 지난 시간의 19과에서 계속하여 이어지는 내용입니다.

그림 1 : 메뉴바의 "Design > Edit Form..." 항목을 선택합니다. (단축키는 다 외우셨지요? 화면에 보이는대로 커멘드(Command)+L 키입니다. ^^)

그림 2 : 익스플로러 윈도우가 나타납니다. 빨간 원 1번부터 3번까지 차례대로 눌러줍니다.
빨간 원 1번 : "Methods" 탭-버튼을 눌러서 해당 화면으로 전환합니다.
빨간 원 2번 : "Project Methods(프로젝트 메소드)" 항목을 선택합니다. (하늘색으로 반전된 부분)
빨간 원 3번 : 새로운 메소드(Method)를 추가하기 위하여 하단 왼쪽에 있는 "New" 버튼을 누릅니다.

그림 3 : "New Method" 윈도우가 나타납니다. 새롭게 추가할 메소드 이름으로 "Compiler_Sample" 이라고 적어준 후, 하단 오른쪽에 있는 "OK" 버튼을 누릅니다.

그림 4 : 새로운 메소드 윈도우가 나타납니다. 보시는 화면과 같이 동일하게 입력하신 후, 메소드 윈도우를 닫고 빠져나옵니다. (메소드 내용은 윈도우가 닫힐 때, 자동으로 저장됩니다)

그림 5 : 방금 작업한 "Compiler_Sample" 메소드가 추가되었습니다. (화면 왼쪽의 하늘색으로 반전된 부분) 그리고 화면 오른쪽에는 "Compiler_Sample" 메소드 내용이 간략하게 Preview(미리보기) 형식으로 보여지네요. 계속해서 이번에는 메소드 하나를 더 추가하기 위하여 하단 왼쪽에 있는 "New" 버튼을 다시 누릅니다.

그림 6 : 메소드 이름을 "Initialize_Sample" 라고 적어준 후, 하단 오른쪽에 있는 "OK" 버튼을 누릅니다.

그림 7 : 보시는 화면 그대로 동일한 내용으로 입력하시고, 윈도우를 빠져나옵니다.

그런데 처음 보는 Compiled application 명령어와 Not 명령어가 보이네요. 이것에 대한 간략한 설명을 드리고 넘어가도록 하겠습니다.

그림 8 : 먼저 Compiled application 명령어를 살펴보기 위하여 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 139 페이지로 이동합니다.

Compiled application : 지금 우리가 작업하고 있는 "4D Study > 4th Dimension 6.8 Exercise > Method Sample" 폴더안에 있는 "Method Sample" 파일의 컴파일(Compile) 유무를 확인하는 명령어입니다. 즉, 컴파일(Compile) 된 원본 소스 파일(Method Sample)로 확인되면 그 결과로 "True(참)" 값을 돌려주고, 컴파일(Compile) 하지 않은 원본 소스 파일(Method Sample)로 확인되면 "False(거짓)" 값을 돌려줍니다.

이 명령어에 대한 결론을 말씀드리자면, 지금 우리가 작업하고 있는 "Method Sample" 소스 파일(Source File)은 아직 컴파일(Compile) 하지 않은 작업하는 상태의 원본 파일이므로 그 결과는 "False(거짓)" 입니다.

참고 1 : 컴파일(Compile) 작업이란? 주로 프로그램이 완성된 맨 마지막 단계에서 행해지는 작업을 말하며, 개발자가 만든 원본 소스 파일(Source File)을 속도가 아주 빠른 기계어로 변환하는 작업을 말합니다.

일단, 컴파일이 마쳐진 파일을 실행해보면 아시겠지만 매우 빠른 속도로 동작하며 적게는 수십 배에서 많게는 수백 배 이상의 차이점을 보여줍니다. (덩치가 크고 연산작업을 많이 필요로 하는 프로그램을 돌릴수록 그 차이점을 실감할 수 있습니다.^^) 그리므로 지금 우리가 배우고 있는 내용은 컴파일 하기 전의 상태로, 몇가지 기능을 직접 만들어 보고 또 이것이 제대로 실행되는지 실행도 시켜보고 또는 틀린 부분이 있으면 이것을 수정도 하고... 이와같은 작업 단계가 되겠습니다. ^^

참고 2 : 컴파일(Compile)이 안된 원본 소스 파일에서는 개발자가 필요에 의해 만들어 사용하는 각종 변수들이 4D의 유저-모드 윈도우에서 실행될 때, 변수 선언 및 초기화 과정을 거치게(또는 필요로 하게) 됩니다. 그러므로 원본 소스 파일을 컴파일하면 컴파일하는 과정에서 각종 변수들의 선언이 미리 다 마쳐진 상태로 컴파일 작업이 마쳐지게 됩니다. 지금 우리가 컴퓨터에 설치하여 사용하는 각종 프로그램들은 전부 이와같이 원본 소스를 컴파일한 파일들이며 우리는 이것을 마우스로 해당 프로그램의 아이콘을 더블-클릭하여 실행하게 되는 것입니다.

그림 9 : 이번에는 Not 명령어를 살펴보기 위하여 "4D Study > 4th Dimension 6.8 Manual" 폴더안에 있는 4D_683_Language_Ref.pdf 파일을 열어서 276 페이지로 이동합니다.

Not : 이 명령어의 뜻은 Boolean 값의 "반대의 경우라면~" 이와 같은 뜻을(기능을) 가지고 있습니다. 자세히 설명드리면~

설명 1 : Boolean 값은 단 2가지의 값만 가질 수 있습니다.
하나는 True(참) 값이고, 또 하나는 False(거짓) 값입니다.

설명 2 : 먼저 7번 그림에서 Compiled application 명령어를 사용하여 전달받는(Boolean) 값은 False(거짓) 입니다. 그러므로 이 값을 다시 Not 명령어 안에 넣고 사용하였으므로 그 결과는 True(참) 값으로 뒤바뀌게 되는 것이지요. 7번 그림에서 사용된~

If (True 값이면 아래의 문장을 실행해라)
이 문장을 실행하라
End If

외와 같은 뜻이 되겠습니다. 즉, (Not(Compiled application)) 이 문장의 결과가 True(참) 이므로
If 문장과 End If 문장 사이에 있는 Compiler_Sample 메소드(변수를 선언하는 메소드)를 실행하기 위하여 그곳으로 잠시 갔다 오라는 뜻이 되겠습니다. ^^

이제 이해가 되시나요? 지금 이해가 안된다고 하더라도 너무 마음 아파하지 마시기 바랍니다. ^^
왜냐하면 다음 시간에 배울 21과 에서는 방금 설명드린 각종 조건식(If~End If 및 기타등등....) 에 대하여 자세히 배우게 될테니까요. ^^ 21과를 마치고서도 조건식 문장이 잘이해가지 않는다면 그때가서 가까운 군부대나 경찰서에 신고하시기 바랍니다. ㅋㅋㅋ

그림 10 : 4D로 만든 원본 소스 파일을 컴파일(Compile) 할 때에는 화면에서 보시는 바와 같이 "4D Study > 4th Dimension 6.8 Developer > 4D Compiler 6.8.3" 폴더안에 있는 4D Compiler 프로그램을 이용하여 기계어로 변환하게 됩니다. 이 프로그램의 사용법은 추후에(나중에 때가 되면) 살펴볼 것입니다. ^^*

그림 11 : 다시 제 위치로 돌아와서 익스플로러 윈도우에서 빨간 원 1번으로 표시된 폼(Forms) 탭-버튼을 누릅니다.

그림 12 : 폼(Forms) 윈도우 안으로 들어가기 위하여 빨간 원 1번에서 3번까지 차례대로 눌러줍니다.

참고 : 빨간 원 3번으로 표시된 "Edit" 버튼을 누르기 귀찮으시면 빨간 원 2번으로 표시된(하늘색으로 반전된) 부분을 마우스로 더블-클릭하셔도 됩니다. (저는 이 방법을 즐겨사용합니다. ^^)

그림 13 : Form1 윈도우 안으로 들어온 화면입니다. 빨간 원 1번으로 표시된 vs10_String1 오브젝트를 마우스로 클릭(선택)하시고 Property List 윈도우에서 빨간 원 2번으로 표시된 Object Method 항목의 "Edit..." 버튼을 눌러줍니다. (해당 오브젝트의 메소드 윈도우 안으로 들어가는 작업이 되겠습니다.)

그림 14 : vs10_String1 오브젝트의 메소드 윈도우로 들어온 화면입니다. 곧바로 메뉴바의 "Edit > Select All"항목을 선택하여 화면에 보이는 메소드 문장을 전체 선택합니다.

그림 15 : 메소드 문장이 전부 선택되었습니다. (하늘색으로 반전된 부분) 곧바로 메뉴바의 "Edit > Clear" 항목을 선택하여 메소드 내용을 삭제합니다.

참고 : 키보드에 있는 delete 키를 누르셔도 동일한 작업효과를 나타냅니다.

그림 16 : 메소드 내용이 전부 삭제되었네요. ^^ 이제 vs10_String1 오브젝트의 메소드 윈도우를 닫고 빠져나옵니다.

그림 17 : 빨간 원으로 표시된 오브젝트가 보이시죠? 오브젝트 안에 메소드 내용이 없으면 삼각형 모양의 검은색 부분이 없어져야 하는데 그대로 보이네요. 이거 일종의 버그(Bug) 입니다. ^^

그림 18 : 원래는 지금 보시는 이 그림과 같이 나타나야 정상입니다. ^^ 그래야 오브젝트 안에 메소드 내용이 들어가 있는지 없는지를 쉽게 파악할 수 있으니까요. 개발자에게 혼동을 줄 수 있는 부분이라 하겠습니다. ^^; 그렇다고 포기하면 안되겠지요? 해결 방법을 살펴보도록 하겠습니다.

그림 19 : 먼저 화면에 보이는 3개의 오브젝트를 한꺼번에 선택하도록 하겠습니다. 키보드의 쉬프트(Shift) 키를 누르고 있는 상태에서 빨간 원 1번부터 3번까지 차례대로 오브젝트 3개를 선택하여 줍니다.

참고 : 빨간 원 1번으로 표시되어 있는 오브젝트가 미리 선택되어 있다면 2번~3번만 누르셔도 됩니다. (오브젝트의 다중-선택 작업이 되겠습니다.)

그림 20 : 메뉴바에서 "Object > Clear Object Method" 항목을 선택합니다.

그림 21 : 어떻습니까? 오브젝트 안에 들어있던 원래의 메소드 내용이 자동으로 전부 삭제되면서 검은색의 삼각형 부분도 없어졌습니다. 17번 그림과 비교하여 보시기 바랍니다. ^^

그림 22 : 이번에는 "문자열 더하기" 버튼을 마우스로 클릭(선택) 합니다.

그림 23 : 메뉴바에서 "Object > Duplicate" 항목을 선택합니다.

참고 : 해당 오브젝트를 똑같이 복사할 때 사용하는 단축키로 커멘드(Command)+D 키를 외워 두시기 바랍니다. ^^ 조금 이따가 사용해 볼 것입니다. ^^

그림 24 : "문자열 더하기" 버튼이 하나 복제되었습니다.

그림 25 : 방금 복제된 "문자열 더하기" 버튼을 화면 왼쪽으로 이동시키고(빨간 원 1번), 곧바로 Property List 윈도우에서 Title 항목을 선택하시고(하늘색으로 반전된 부분) 바로 오른쪽 부분에서 "변수 초기화"라고 수정한 후(빨간 원 2번) 다시 한번 왼쪽에 있는 Title 항목(빨간 원 3번)을 마우스로 눌러줍니다.

그림 26 : 버튼 제목이 "변수 초기화"로 수정된 모습입니다.

그림 27 : 이번에는 "변수 초기화" 버튼의 메소드 내용을 수정하여 보도록 하겠습니다. 먼저 "변수 초기화" 버튼이 선택되어 있는 상태에서 Property List 윈도우의 빨간 원 1번으로 표시된 "Edit..." 버튼을 눌러줍니다.

그림 28 : "변수 초기화" 버튼의 메소드 윈도우 안으로 들어온 화면입니다. 화면에 빨간색으로 보이는 Method_Page01_01 글자를 키보드의 delete 키를 이용하여 삭제합니다.

삭제 방법 1 : 깜박거리는 입력 커서를 Method_Page01_01 글자 맨 오른쪽으로 이동한 후, 키보드의 delete 키를 여러번 눌러 삭제합니다.

삭제 방법 2 : 그림 14번~15번에 사용한 방법과 같이 메뉴바 "Edit > Select All" 항목을 선택한 후, 다시 한번 메뉴바 "Edit > Clear" 항목을 선택하여 삭제합니다.

삭제 방법 3 : 키보드의 단축키를 이용하여 커멘드(Command)+A 키를 누른 다음에 곧바로 키보드의 delete 키를 한번 눌러줍니다.

그림 29 : 깨끗이 삭제를 하셨다면 화면에 보이는대로 Initialize_Sample 라고 입력한 다음 키보드의 리턴(Return) 키를 눌러줍니다.

참고 : 11번 그림에서 하늘색으로 반전된 메소드 이름을 이곳에 적어주는 작업입니다. 나중에 "변수 초기화" 버튼이 눌려지면 Initialize_Sample 메소드를 실행하기 위하여 그곳으로 갔다 오라는 뜻이 되겠습니다. ^^

그림 30 : 메소드 이름을 적어주면 빨간색 글자로 바뀌는 동시에 글자도 약간 오른쪽으로 기울어진 이탤릭체로 화면에 보여집니다. 이제 윈도우를 닫고 빠져나옵니다.

그림 31 : 이번에는 Form1 윈도우에 이벤트(Event) 기능을 설정하여 보도록 하겠습니다. 메뉴바의 "Form > Form Properties..." 항목을 선택합니다.

그림 32 : Form Properties 윈도우가 나타납니다. 이곳에서 빨간 원 1번으로 표시된 "Events" 탭-버튼을 누릅니다.

그림 33 : "Events" 탭 화면으로 전환된 화면입니다. 맨 위에 있는 On Load 라는 글자의 맨 왼쪽 부분에 보시면 검은색의 체크 기호가 표시되어 있을 것입니다. 이 표시는 해당 이벤트를 "사용하겠다~" 라는 뜻이 되겠습니다.
바로 아래에 있는 On Unload 이벤트에는 검은색의 체크 기호가 없지요? 이 부분은 "사용하지 않겠다~" 라는 뜻이 되겠습니다. ^^

빨간색의 동그란 원 안에 있는 검은색의 체크 기호를 마우스로 한번 누르시면(클릭) 체크기호가 사라졌다가 다시 한번 누르면 나타나게 되어 있습니다.

그러면 맨 위에 있는 On Load 이벤트 하나만 활성화 시키고 나머지 그 밑에 있는 이벤트 항목은 전부 해제시켜 줍니다. 그리고 화면 오른쪽 아랫부분에 빨간색의 네모 테두리로 표시된 "하단 스크롤" 버튼을 눌러서 밑으로 더 내려간 다음 지금 보고 계시는 화면에 나타나지 않은 이벤트들도 전부 해제시켜 줍니다.

그림 34 : 보시는 화면과 똑같이 되었습니까? 맨 위에 있는 On Load 이번트 한가지 항목에만 체크(활설화) 되어 있네요. ^^ 이제 맨 하단에 있는 "OK" 버튼을 눌러서 Form Properties 윈도우를 빠져나옵니다.

그림 35 : Form1 윈도우로 되돌아온 화면입니다. 이제 모든수정을 마쳤으므로 윈도우를 닫고 빠져나옵니다.

그림 36 : 익스플로러 윈도우로 되돌아온 화면입니다. 화면 오른쪽에 보시면 방금 작업한 Form1 윈도우의 내용이 Preview(미리보기) 형식으로 살짝 보이는군요. ^^ (빨간색의 네모 테두리로 표시된 부분)

곧바로 빨간 원 1번으로 표시된 Methods 탭-버튼을 누릅니다.

그림 37 : Methods 탭 윈도우로 전환된 화면입니다. 빨간 원 1번~4번까지 차레대로 눌러줍니다.

참고 1 : 빨간 원 4번으로 표시된 "Edit" 버튼을 누르시기 귀찮으시면 빨간 원 3번을 마우스로 더블-클릭 하셔도 됩니다. ^^

참고 2 : 빨간 원 2번으로 표시된(하늘색으로 반전된) Form1 윈도우에 메소드를 집어넣는 과정이 되겠습니다.

참고 3 : 여기서 잠깐! 지금까지 여러분은 오브젝트 안에만 메소드 내용을 집어넣는 방법에 대하여 배우셨습니다. 하지만 메소드는 오브젝트 뿐 아니라 폼(Form) 윈도우 안에도 집어넣을 수 있답니다. ^^ 오늘 새롭게 배우는 내용이므로 꼭 기억해 두시기 바랍니다. ^^

그림 38 : 빈 공백의 Form1 윈도우가 나타나면 위 화면과 동일하게 폼 메소드 내용을 입력한 후, 윈도우를 닫고 빠져나옵니다.

참고 : 메소드 내용에 On Load 라는 글자가 보이네요.(오렌지 색으로 밑줄이 그어진 부분) 34번 그림에서 On Load 이벤트 하나만 활성화 시킨것을 지금 이곳에서 사용하는 작업이 되겠습니다. ^^

그림 39 : 화면 오른쪽의 Preview(미리보기) 라디오 버튼 아래에(빨간색의 커다란 네모 테두리로 둘려진 부분에) 방금 추가한 폼-메소드 내용이 보여지네요. ^^ 이제 모든 작업을 마쳤으므로 익스플로러 윈도우를 닫습니다. (작업이 제대로 이루어졌는지 확인해보기 위하여 실행하러 가보자고요~ ㅋㅋㅋ)

그림 40 : 빨간색 원으로 표시된 유저-엔바이론먼트 윈도우 아무곳이나 눌러서 유저-모드로 빠르게 전환합니다. 그리고 빨간색 네모로 표시된 "윈도우 확대 및 축소" 버튼을 한번 눌러줍니다.

그림 41 : 윈도우가 크게 커졌습니다. 이제 실행하기 위하여 아무곳이나 더블-클릭합니다. (빨간색 원으로 표시된 부분 참고)

그림 42 : 드디어 실행되었네요. ^^ 그러면 맨 위에 있는 "문자열 1 :" 오브젝트 안에 적절한 데이타를 입력하도록 하겠습니다.

그림 43 : 보시는 화면과 같이 2개의 데이타를 입력하고 "문자열 더하기" 버튼을 누릅니다.
결과 : "문자열 3 :" 오브젝트 안에 "동해물과백두산이"라고 나타날 것입니다. ^^

그림 44 : 이번에는 "변수 초기화" 버튼을 눌러보도록 하겠습니다. 이 버튼을 누르면 11번 그림에서 하늘색으로 반전된 Initialize_Sample 메소드가 실행되게 됩니다. 다시 설명 드리면 7번 그림의 메소드 내용이 차례대로 실행되는 것이지요. (모든 변수를 초기화 시키게 됩니다.)

그림 45 : "변수 초기화" 버튼을 누른 후의 화면입니다. 깨끗하게 비워졌네요. ^^ 이제 맨 하단에 있는 "나가기" 버튼을 눌러서 밖으로 빠져나가도록 하겠습니다.


[편집자 주] 이미지를 클릭하시면 원본사이즈의 이미지를 볼 수 있습니다.



다음글 - Chapter20. 메소드(Method)의 또 다른 사용법 -2-
현재글 - Chapter20. 메소드(Method)의 또 다른 사용법 -1-
이전글 - Chapter19. 메소드(Method)의 실제 사용법