TheArtandScienceofSmalltalk:Glossary
- 용어집
용어집
이번 절에서는 본 책에서 반복적으로 사용된 단어들에 대한 정의를 제공하고자 한다. 개중에 다수는 객체 지향 프로그래밍에서 비롯되었는데, 다른 여러 분야에서와 마찬가지로 용어가 정확히 어떤 의미를 갖는지와 관련해 모호함이나 논쟁으로 인해 시달리고 있다. 이러한 경우, 주어진 정의는 스몰토크에서 일반적으로 수용하는 정의를 이용하거나 책에서 사용된 정의를 기반으로 한다. 이탤릭체로 표기된 단어는 용어집에만 사용되는 (또는 관련된) 정의이다.
추상 클래스 - 디자이너가 절대로 인스턴스를 갖지 않도록 만든 클래스. 스몰토크에서는 규칙에 해당하므로 이를 강요하는 명시적인 메커니즘이 없다 (원할 경우, new 클래스 메서드를 self shouldNotImplement (철자 수정하였습니다.)로 오버라이드할 수는 있지만). 때로는 추상 슈퍼클래스라고 부르기도 한다. 구체적 클래스와 비교하라.
Accessing 메서드 – 디자이너가 객체의 private 인스턴스 변수로 접근을 허용하기 위한 의도로 만든 메서드. Accessing (때때로 줄여서 'access') 메서드는 보통 get 메서드와 set 메서드로 나뉜다.
어댑터 – 스몰토크에서 한 객체가 전송한 메시지를 다른 객체가 이해하는 메시지로 변환하는 객체.
집합체(aggregation) – 객체들 간 여러 관계들 중 하나로, 객체를 여러 다른 객체들로 구성된 것으로 간주한다.
측면(aspect) – 스몰토크에서 객체의 특정 부분, 면 또는 특징.
블록 – 스몰토크에서 완전한(self contained) 코드 조각으로, 그 자체가 객체이며, 원하는 수만큼 생성, 전달, 실행 가능하다. 블록은 0개 또는 그 이상의 매개변수를 취할 수 있고, 일반적인 형태, [:p1 :p2 ㅣㅣtempsㅣ"Smalltalk code"3 를 가질 수 있다.
브라우저 – 스몰토크 개발 환경에서 스몰토크 클래스가 클래스 라이브러리에 속하는지, 아니면 사용자에게 속하는지를 검사하는 데 사용되는 툴의 집합.
캐스케이딩 – 메시지 표현식에서 동일한 수신자를 향한 다중 메시지 전송, 세미콜론(:)으로 구분된다.
카테고리 – 스몰토크에서 관련 함수를 실행하거나, 브라우저에 표시될 때 인간의 편의를 위해 한데 모인 클래스 집합. 프로토콜과 비교하라.
체이닝 – 메시지 표현식에서 이전 메시지의 리턴 값이었던 객체로 메시지를 전송하는 것.
'변경된' 메시지 – 객체가 변경되었으며 '업데이트' 메시지를 통해 그 종속자들에게도 알려야 함을 객체에게 통지하기 위해 (보통 스스로) 전송할 수 있는 여러 메시지들 중 하나.
클래스 – 스몰토크에서 다른 객체들에 (인스턴스) 대한 형틀이자 그들을 생성하기 위한 팩토리의 역할까지 하는 특별한 유형의 객체. 모든 객체는 특정 클래스의 인스턴스이다.
클래스 라이브러리 – 스몰토크의 일부로 따라오거나 스스로 언어와 개발 환경을 구현하는 수백 개의 클래스로 이루어진 집합. 시스템 라이브러리라고도 부른다.
클래스 계층구조 – 트리와 같은 구조로, 모든 클래스는 다른 클래스들과의 상속 관계 덕분에 해당 구조에 딱 맞게 들어맞는다. 때로는 클래스 라이브러리와 동의어로 사용된다.
클래스 메서드 – 클래스의 인스턴스가 아니라 자신을 정의하는 클래스로 직접 메시지를 전송함으로써 호출되도록 설계된 메서드.
클래스 변수 – 클래스, 그것의 서브클래스, 클래스의 모든 인스턴스와 서브클래스가 접근하는 클래스에서 정의된 변수.
컬렉션 – 클래스 라이브러리에서 다른 객체들의 컬렉션에 대한 개념을 구현하는 수많은 클래스에 붙여진 일반적인 이름. 컬렉션 클래스의 계층구조에서 최상위 층에 있는 추상 클래스의 이름이기도 하다.
구체적 클래스 – 추상 클래스와 반대로 디자이너가 인스턴스를 갖도록 의도한 클래스. 대부분의 일반 클래스는 구체적 클래스로 간주한다.
컨트롤러 – MVC 아키텍처에 속하는 세 가지 유형의 클래스 중 하나. 컨트롤러는 사용자로부터 입력을 키 누름과 마우스 클릭으로 수신하여 모델에서 실행되는 액션과 관련해 입력을 해석한다.
의존성 – 객체들 간 중요한 관계 유형으로, 한 객체가 다른 객체에 일어난 변화에 대한 정보를 수신할 수 있다. 의존성 관계는 시스템 내 어떤 객체들 사이에서도 가능하지만 특히 MVC 아키텍처의 구성원(member)들 간에 중요하다.
의존성 메커니즘 – 클래스 객체와 다른 곳에서 의존성 관계를 구현하는 메서드 집합.
Dictionary – 하나의 객체 집합(키)을 이용해 다른 객체 집합(값)을 참조하거나 색인하는 컬렉션 유형.
캡슐화 – 객체의 내적 구조는 private하다는 개념. 스몰토크에서는 객체의 인스턴스 변수가 자신에게만 보인다는 사실과 (accessing 메서드가 제공되지 않는 한) 메서드의 인터페이스는 그 구현부에서 분리된다는 사실 모두 캡슐화의 예에 해당한다.
File–In – file–out 연산을 통해 생성된 스몰토크 소스 코드를 포함하고 file–in 연산을 통해 다른 이미지로 로딩할 수 있는 파일.
Get 메서드 – 클래스의 인스턴스 사용자들이 인스턴스로 메시지를 전송하여 특정 인스턴스 변수의 값을 얻을 수 있도록 하기 위해 클래스의 작성자에 의해 제공되는 메서드. 주로 인스턴스 변수와 동일한 이름을 갖는다.
계층구조 – 객체가 트리와 같은 구조로 배열된 것. 스몰토크에서는 주로 클래스 계층구조와 동의어로 사용되나 다른 계층구조들도 존재한다 (예: 창 내의 위젯들 간).
구현하다 – 스몰토크에서는 메서드가 사실상 어떤 클래스에서 (상속되는 대신) 정의된 (또는 재정의된) 경우 클래스가 메서드를 구현했다고 말한다. 이해하다와 비교해보라.
구현부 – 클래스 안에 메서드의 실제 정의부. 인터페이스와 비교하라.
상속 – 계층구조에서 구조화된 바에 따른 클래스들 간 관계. 계층구조의 하층에 위치한 클래스는 계층구조의 상위층에 위치한 클래스로부터 상속받는다고 말한다. 클래스가 다른 클래스로부터 상속을 받을 때는 클래스의 메서드와 변수를 모두 받고, 자신만의 추가 메서드와 변수를 점진적으로 정의할 수 있다.
인스펙터 – 개발 환경 내 툴로서, 스몰토크 프로그래머가 인스턴스 객체를 검사하고 수정하도록 해준다. 브라우저와 비교하라.
인스턴스 – 클래스에 의해 정의된 객체의 특정 발생. 스몰토크에서 모든 객체는 어떤 클래스의 인스턴스에 해당한다.
인스턴스 메서드 – 클래스에서 정의되지만 그 클래스의 인스턴스에 의해서만 이해되는 메서드.
인스턴스 변수 – 클래스에서 정의되지만 그 클래스의 인스턴스에서만 보이는 변수. 클래스의 모든 인스턴스는 클래스에서 정의된 인스턴스 변수에 대해 구분된 고유의 발생을 가진다.
인스턴스화 – 클래스가 자신의 인스턴스를 생성하는 과정에 붙인 이름.
인터페이스 – 메서드를 향한 매개변수와 리턴 값의 이름. 구현부와 비교하라.
Leaf – 계층구조의 최하단에 위치한 객체.
메시지 – 한 객체가 다른 객체 내의 메서드를 호출하는 메커니즘. 메시지는 실행할 메서드명과 필요한 매개변수를 포함한다.
메시지 표현식 – 다양한 수신자에게 전송된 메시지, 다음 메시지의 수신자 혹은 다음 메시지의 매개변수로서 사용된 메시지 결과의 결합. 스몰토크에서 메시지 표현식은 항시 마침표(period)로 끝이 난다.
메서드 – 객체 내부에 코드의 기본 단위. 각 메서드에는 이름이 있고, 0개 또는 그 이상의 매개변수를 취하며, 하나의 객체를 리턴한다. 메서드는 메시지를 전송해서 호출되고, 하나 더 많은 메시지 표현식을 이용해 구현된다.
모델 – MVC 아키텍처에 속하는 세 가지 클래스 유형 중 하나. 모델은 애플리케이션 데이터의 저장소 역할을 하며, 애플리케이션 기능을 구현한다.
MVC 모델-뷰-컨트롤러 – 그래픽 사용자 인터페이스가 있는 애플리케이션 기능이 세 가지 유형의 객체, 모델, 뷰, 컨트롤러로 나뉘는 스몰토크의 기본 구조적 구성 요소(building block).
통지자 – 오류 또는 다른 예외적 상황에 응해 스몰토크가 팝업하는 창.
객체 – 코드(메서드)와 데이터(변수)가 밀접하게 결합되어 구성된 소프트웨어 개체. ("모든 것"이 객체인) 스몰토크에선 용어가 인스턴스와 클래스에 동등하게 적용된다. 또한 스몰토크에서 객체란 전체 클래스 계층구조의 루트에 위치한 클래스의 이름이기도 하다.
객체 지향적 – 객체를 이용해 빌드되거나, 다음 원칙들 중 일부 또는 모두를 통합해 빌드된 것: 캡슐화, 다형성, 상속, 인스턴스화.
오버로딩 – 이름은 동일하나 다른 행위를 가진 다중 메서드를 설명하는 데 사용되는 용어. 이러한 경우 메서드명이 오버로딩되었다고 말한다. 따라서 다른 객체들로 전송된 동일한 메시지는 어떤 메시지가 실제로 호출되었는지에 따라 다른 효과를 가진다. 스몰토크에서 이는 메시지를 수신하는 객체의 클래스에 따라 좌우될 것이다.
오버라이딩 – 슈퍼클래스로부터 상속된 메서드의 클래스에서 이루어지는 재정의 또는 교체(replacement).
매개변수 – 실행에 필요한 추가 정보로 호출되는 메서드를 제공하기 위해 메서드의 일부로서 전송되는 객체. 스몰토크에서 매개변수는 메서드명 안에 포함된다 (선택자).
프로토콜 – 클래스가 이해하는 메서드의 집합. 유사한 함수를 구현하거나, 협력하여 단일 함수를 구현하는 메서드 집합. 인간의 편의를 위해 브라우저에 함께 표시되는 메서드 집합. 카테고리와 비교하라.
다형성 – 여러 다른 클래스들이 동일한 메서드에 대해 다른 구현부를 제공할 수 있다는 개념. 따라서 다른 클래스들의 인스턴스로 전송된 동일한 메시지는 동일한 효과를 가지면서 완전히 다른 방식으로 구현된다.
수신자 – 메시지가 전송되는 객체에게 주어진 이름. 송신자와 비교하라.
리턴 값 – 메서드 호출이 완료된 후 수신자가 송신자에게 다시 전달하는 객체.
루트 – 계층구조의 최상위층에 위치한 객체.
선택자 – 메서드의 이름.
Self 'Me'.- 스몰토크에서 어떤 객체든 자신에게 부여한 이름. 객체가 스스로에게 메시지를 전송해야 할 때 표현식에 사용된 특별한 유형의 pseudo-변수로서, 다른 메서드 내부로부터 고유의 메서드 중 하나를 호출하는 유일한 방식이다.
송신자 – 다른 객체로 전송되는 메시지를 보내는 객체.
Set 메서드 – 클래스의 인스턴스 사용자들이 인스턴스 변수 중 하나의 값을 설정할 수 있도록 클래스의 작성자가 제공하는 accessing 메서드. 매개변수로서 값이 있는 적절한 메시지를 전송함으로써 이루어진다.
스몰토크-80 – Xerox PARC에서 개발된 객체 지향 프로그래밍 시스템으로서, 언어, 개발 환경, 그리고 광범위한 시스템 클래스의 라이브러리로 구성된다.
서브클래스 – 다른 클래스와 상속 관계에 관여할 때 기능을 상속받는 클래스가 서브클래스에 해당한다. 스몰토크에서 Object 를 제외한 모든 클래스는 다른 클래스의 서브클래스이다. 클래스가 상속 계층구조의 중간에 위치할 경우 서브클래스와 슈퍼클래스를 모두 가질 수 있다.
Super – self 와 유사하여 super란 'me'를 의미한다. 하지만 self와 달리 객체에 의해 super에게 메시지가 전송될 때 호출될 메서드 검색이 객체의 클래스에서 시작되는 것이 아니라 객체의 슈퍼클래스에서 시작된다. 이는 클래스로 하여금 그들의 슈퍼클래스로부터 상속된 메서드의 오버라이드를 가능하게 해줄 뿐만 아니라 오버라이드하는 메서드의 구현부에서 오버라이드된 메서드를 호출할 수도 있게 해준다. 이런 경우 super 대신 self를 이용하면 오버라이드하는 메서드와 오버라이드된 메서드가 같은 이름을 가지기 때문에 무한 루프를 야기한다.
슈퍼클래스 – 다른 클래스와 상속 관계에 관여할 때 다른 클래스가 특정 클래스로부터 상속 받는 경우, 특정 클래스는 슈퍼클래스에 해당한다. 상속 트리의 'leaves'에 위치한 클래스를 제외한 모든 클래스는 슈퍼클래스로, 어쩌면 동시에 서브클래스가 되기도 한다. 슈퍼클래스가 꼭 추상 클래스일 필요는 없음을 주목한다.
시스템 클래스 – 클래스의 표준 시스템 라이브러리의 일부에 해당하는 어떤 객체든 이에 해당한다.
시스템 라이브러리 – 클래스 라이브러리와 동의어.
트리 – 스몰토크에서는 계층구조를 나타내는 또 다른 이름.
이해하다 – 객체가 메시지에 대한 응답으로 호출 가능한 메서드를 구현하거나 상속받을 경우 객체는 메시지를 이해한다고 말한다.
'업데이트' 메시지 – 객체가 의존하는 다른 객체로 '변경된' 메시지가 전송될 경우 객체가 수신하는 다수의 메시지들 중 하나.
변수 – 객체의 저장 위치. 스몰토크에서 변수는 다음과 같은 유형이 가능하다: 클래스; 클래스-인스턴스; 인스턴스; 임시; 전역; 또는 풀.
뷰 – MVC 아키텍처에 속하는 세 가지 유형의 클래스 중 하나. 뷰는 모델 객체를 화면에 그래픽 또는 텍스트식으로 표시하는 책임을 진다.
가상 이미지 – 스몰토크 가상 머신의 개념상 메모리 공간.
가상 머신 – 실제 컴퓨터에 실행되는 프로그램으로, 모든 스몰토크 프로그램이 실행되는 표준화된 '가상' 컴퓨터를 시뮬레이트한다.
VisualWorks – ParcPlace Systems, Inc.에서 붙인 스몰토크 시스템에 대한 상업적 구현의 이름.
위젯 – 그래픽 사용자 인터페이스에서 어떤 버튼, 텍스트 입력 필드, 뷰, 기타 장치든 그에 붙여진 고유용어.
Xerox PARC – 캘리포니아에 위치한 Xerox Palo Alto Research Center.