VisualWorksIntroduction:Page06

From 흡혈양파의 번역工房
Jump to navigation Jump to search

cincom_tutorial_vwlogo
cincom_tutorial_cincomlogo


입문서 : 시스템 브라우저(파트1)

cincom_tutorial_stlogo

cincom_tutorial_openbook VisualWorks 개발환경에서는 스몰토크 이미지의 주요구성(네임스페이스, 패키지, 클래스, 프로토콜, 메서드, 퍼셀)을 표시하거나 편집하기 위한 System Browser가 있습니다. "이미지"는 이것들의 컴포넌트를 포함한 실행파일(확장자 "im")입니다.
cincom_tutorial_certificate 이 입문서는 시스템 브라우저를 간단히 설명하고 예제를 해설하겠습니다.
cincom_tutorial_design 아래의 연습은 System Browser의 상단에 위치한 네 개의 창의 연동에 대해 연습하겠습니다.

그림 B-1을 참조해 주십시오.

그림 B-1. 시스템 브라우저의 화면 구성-(그림 7-4와 같음)

맨 처음 창은 패키지의 목록입니다. 우선 Magnitude를 찾을때까지 스크롤합니다. 찾았다면 명칭 왼쪽에 있는 십자버튼을 클릭해서 전개합니다. 그리고, Magnitude-General을 클릭(선택)해 주십시오. 그러면 옆 창에 다섯 가지 클래스가 목록에 표시 됩니다.

  • Character
  • Date
  • Magnitude
  • Time
  • TimeZone

이것은 클래스 창입니다. 그러면 Date를 클릭(선택)해 주십시오. 세 번째 창은 프로토콜 목록입니다. 이 목록은 선택된 상부 창의 탭에 의존합니다. 클래스 탭을 클릭해 주십시오. 네 개의 프로토콜이 목록에 표시 됩니다.

  • class initialization
  • general inquiries
  • instance creation
  • private

Instance creation 프로토콜을 클릭(선택)해 주십시오. 옆 창에는 여섯 개의 메서드가 목록에 표시 됩니다.

  • fromDays:
  • newDay:month:year:
  • newDay:monthNumber:year:
  • newDay:year
  • readFrom:
  • today

today 메서드를 클릭(선택)해 주십시오. 텍스트가 아래 메서드 뷰에 표시됩니다. 이것은 Date 클래스의 today 메서드에 대한 실제 소스코드입니다.

지금까지 설명한대로 선택하면, 화면은 아래와 같이 표시되어 있을 것입니다.

그림 B-2. Date 클래스의 today 메서드


프로토콜 목록 상부에 있는 인스턴스 탭을 클릭해 주십시오. 프로토콜 목록이 변경되었습니다. Date 클래스의 인스턴스 메서드가 표시되어 있습니다.


클래스와 인스턴스라는 두 종류의 메서드의 구별을 이해하기 위해 아래와 같은 코드를 실행해 주십시오.


1. 새로운 Workspace를 엽니다.


2. 아래와 같은 코드를 입력해 주십시오.

Date today


3. 모든 코드를 반전(선택)하고 <오퍼레이트 클릭>Print를 선택해 주십시오.

코드 옆에 "오늘"의 날짜가 표시됩니다.


4. 새로 아래와 같은 코드를 입력해 주십시오.

Date addDays: 1


5. 모든 코드를 반전(선택)하고 <오퍼레이트 클릭>Print를 선택해 주십시오.

아래와 같은 다이얼로그 박스가 표시됩니다.

그림 B-3. notifier 다이얼로그 박스

이것이 발생하는 이유는 Date클래스의 클래스측 메서드에 addDays: 메서드가 존재하지 않기 때문입니다. addDays:Date 클래스의 인스턴스에 존재합니다. today 메서드는 클래스 메서드이기 때문에 Date 클래스에서 동작합니다.


6. notifier 다이얼로그 박스를 닫아 주십시오.


7. 그리고, 아래 코드를 입력해 주십시오.

Date today addDays: 1


8. 모든 코드를 반전(선택)하고 <오퍼레이트 클릭>Print를 선택해 주십시오.

코드 옆에 "내일"의 날짜가 표시됩니다.


9. 그러면 아래 코드를 입력해 주십시오

Date tomorrow


10. 모든 코드를 반전(선택)하고 <오퍼레이트 클릭>후 프린트를 선택해 주십시오

계속, 수정, 혹은 취소를 묻는 다이얼로그 박스가 표시됩니다. 왜냐면, Date 클래스에 tomorrow라는 메서드가 존재하지 않기 때문입니다. 그러면, 실행할 수 있도록 바꿔봅시다. 여기서는 System Browser를 사용한 변경방법을 설명하겠습니다.


11. 프로토콜 목록 상부의 클래스 탭을 클릭해 주십시오. 네 개의 프로토콜이 목록에 표시 됩니다.


12. instance creation 프로토콜을 클릭(선택)해 주십시오. 표시된 메서드 목록의 여섯 개의 메서드 마지막에 {{HighlightBold|today} 메서드가 표시됩니다.


13. today 메서드를 클릭(선택)해 주십시오. today 메서드의 소스코드를 봐주십시오.


14. 메서드 코드 뷰를 아래와 같이 바꿔주십시오.

tomorrow 
^self today addDays: 1


15. 메서드 코드 뷰에서 <오퍼레이트 클릭>Accept를 선택해 주십시오. 타이핑 미스가 없다면 입력된 코드는 "컴파일"되어 tomorrow 메서드가 Date 클래스의 클래스쪽 목록에 표시됩니다.

아래 그림과 같은지 확인해 주십시오.

그림 B-4. 클래스쪽의 tomorrow 메서드


16. Workspace에 아래와 같이 코드를 입력해 주십시오.

Date tomorrow


17. 모든 코드를 반전(선택)하고 <오퍼레이트 클릭>Print를 선택해 주십시오

코드 옆에 "내일"의 날짜가 표시됩니다.

cincom_tutorial_certificate 정리

이 연습에서는 패키지, 클래스, 프로토콜, 메서드의 관계를 배웠습니다. System Browser는 이것들의 관계를 확인하기 위해 사용합니다. 클래스 메서드와 인스턴스 메서드의 차이점도 인식하셨을 겁니다.

마지막으로, Date클래스의 클래스 메서드를 작성하기 위해서 System Browser의 기능을 사용했습니다. 이 작업은 Inspect가 없었을지도 모릅니다. 후에 스몰토크로 프로그래밍 해간다면 믿을수 없으정도로 매력적인 존재라는 것을 인식할 수 있을 것입니다.

스몰토크의 비주얼웍스에서는 기존의(제공된) 메서드와 클래스의 모든 라이브러리에 접근할 수 있습니다. 자신의 클래스나 메서드를 작성하는 기능뿐만이 아닌, 기존의 것을 개량하는 힘도 필요합니다. 스몰토크 개발환경의 주도권은 개발자가 가지고 있습니다. 다른 언어에서 그러한 경우는 없죠.


| 학습으로 돌아가기 |