ProgrammingInObjectiveC:Appendix A

From 흡혈양파의 번역工房
Jump to navigation Jump to search
4부 부록 / 부록 A
용어집

부록 A :: 용어집

이 용어집에서는 이 책에서 만나는 여러 용어의 비공식적인 정의를 정리한다. 이 가운데 일부는 Objective-C 언어에서 발생하였고, 다른 용어들은 객체지향 프로그래밍에서 그 어원을 찾을 수 있다. 객체지향 프로그래밍에서 비롯된 경우, Objective-C 언어에 적용되도록 용어의 의미를 설명하였다.


가비지 컬렉션(garbage collection) 참조되지 않는 객체를 자동으로 릴리스하는 메모리 관리 시스템이다. 가비지 컬렉션은 아이폰 런타임 환경에서는 지원되지 않는다.


객체(Object) 배열과 관련된 메서드의 모옴이다. 객체에 메시지를 보내 그 메서드중 하나를 실행할 수 있다.


객체지향 프로그래밍(object-orinted programming) 클래스와 객체에 기반을 두고 이들 객체에 액션을 수행하는 프로그래밍 방법이다 .


게터 메서드(getter method) 인스턴스변수의 값을 받아오는 접근자 메서드이다. ▷ 세터메서드.


공식 프로토콜(formal protocol) @protocol 지시어로 선언된 이름으로 그룹지어진, 관련된 메서드의 모옴이다. 다른 클래스들은 모든 필요한 메서드를 구현하여(혹은 상속받아) 공식 프로토콜을 채택할 수 있다. ▷ 비공식프로토콜.


공용체(union) 집합 데이터 형으로, 구조체와 마찬가지로 멤버를 포함하는데 이 맴버들은 동일한 저장공간을 공유한다. 한번에 이 멤버 중의 단 하나만이 저장공간을 차지할 수 있다.


구상 클래스(concrete subclass) 추상 클래스의 서브클래스이다. 구상 클래스에서 인스턴스를 생성할 수 있다.


구조체(structure) 다양한 형의 멤버를 담을수 있는 집합적인 데이터 형이다. 구조체는 다른 구조체에 대입될 수 있고, 함수나 메서드의 인수로 건네지거나 반환될 수 었다.


구현 부분(implementation section) 해당하는 인터페이스부분(혹은 프로토콜 정의)에서 선언된 메서드의 실제 코드(구현)을 담고 있는 클래스 정의 부분이다.


국제화(internationalization) ▷ 지역화.


널 문자(null character) 값이 0 인 문자이다. 널 문자상수는 '\0' 으로 표시한다.


널 포인터 (null pointer) 유효하지 않은 포인터 값이다. 보통 0 으로 정의되어 있다.


노티피케이션(notification) 특정 이벤트가 발생할 때 통지를 받기로 등록된 객체에 메시지를 보내는 과정이다.


다형성(polymorphism) 동일한 메시지를 다른 클래스의 객체가 받을수 있는 기능이다.


데이터 캡슐화(data encapsulation) 객체의 데이터는 객체 자신의 인스턴스 변수에 저장되고 객체의 메서드로만 접근할 수 있다는 개념이다. 데이터의 무결성을 유지한다.


델리게이트(delegate) 다른객체의 액션을 수행하도록 지정된 객체이다.


동적 바인딩(dynamic binding) 컴파일 시가 아닌 런타임 시에 객체에 호출할 메서드를 결정하는것을 말한다.


동적 타이핑(dynamic typing) 객체가 어느 클래스에 속하는지를 컴파일 시가 아닌 런타임 시에 결정하는 것이다. ▷ 정적 타이핑.


딕셔너리(dictionary) Foundation 프레임워크 에서 NSDictionary 와 NSMutableDictionary 클래스로 구현되어 있는 키-값 묶음의 컬렉션이다.


런타임(runtime) 프로그램이 실행되는 시기이다. 또한 프로그램의 인스트럭션 수행을 책임지는 매커니즘을 뜻한다.


레퍼런스 카운트(reference count) ▷ 리테인 카운트.


루트 객체(root object) 상속 계층도에서 최상위 객체로, 부모 클래스가 없다.


리테인 카운트(retain count) 객체가 참조된 횟수를 나타내는 횟수이다. 객체에 retain 메시지를 보내면 증가되고 releases 메시지를 보내면 감소된다.


링킹(linking) 하나 또는 그 이상의 객체 파일을 실행할 수 있는 프로그램으로 변환하는 과정이다.


메서드(method) 클래스에 속한 프로시저로, 클래스 객체나 그 클래스의 인스턴스에 메시지를 보내 실행시킬 수 있다. ▷ 클래스 메서드, 인스턴스 메서드.


메시지 (message) 객체(수신자)에 보내지는 메서드와그에 해당하는 인수이다.


메시지 표현식(message expression) 대괄호로 둘러싸인 표현식으로, 객체(수신자)와 그 객체에 보낼 메시지를 나타낸다.


명령문(statement) 세미콜론이 뒤에 붙은 하나 이상의 표현식이다.


명령문 블록(statement block) 중괄호로 묶인 하나 이상의 명령문이다. 지역 변수는 명령문블록 안에서 선언될 수 있고, 이 경우 변수의 범위는 해당되는 블록으로 제한된다.


문자 스트링(Character string) 널 문자로 종료되는, 연속된 문자이다.


문자 스트링 상수(constant character string) 큰 따옴표로 묶인, 연속되는 문자이다. 만일 @ 문자가 앞에 나오면 NSConstantString 형 인 문자스트링 상수 객체를 정의한다.


배열(array) 순서가 있는 값의 모음이다. 배열은 Objective-C 의 기본 형으로 정의되거나 Foundation 프레임워크의 NSArray, NSMutableArray 클래스 를통해 객체로 구현된다.


부모클래스(parent class) 다른 클래스가 상속받는 클래스이다. 수퍼클래스 라고도 한다.


부합(conform) 클래스가 구현이나 상속을 통해 프로토콜에서 필요한 모든 메서드를 받아들이면 프로토콜에 부합한다고 한다.


분산 객체(Distributed Objects) 한 프로그램 내의 Foundation 객체와 다른 컴퓨터, 다른 프로그램의 Foundation 객체가 서로 통신할수 있도록 하는 기능이다.


비공식 프로토콜(informal protocol) 카테고리, 일반적으로 루트 클래스의 카테고리로 선언된, 논리적으로 관련 있는 메서드의 모음이다. 공식 프로토콜과 달리 비공식 프로토콜의 경우 모든 메서드를 구현해야 하는 것은 아니다 ▷ 공식 프로토콜.


비트 필드(bitfield) 각자 지정된 필드 길이를 찾는 정수를 하나 이상 갖는 구조체이다. 비트 필드는 다른 구조체 멤버에 접근하는 것과 마찬가지로 다룰 수 있다.


상속(inheritance) 루트 객체에서 시작하여 서브클래스에 이르기까지 클래스의 메서드와 인스턴스 변수를 건네주는 작업이다.


서브클래스(subclass) 자식 클래스라고도 알려진 서브클래스는 자신의 부모나 수퍼클래스에서 메서드와 인스턴스 변수를 상속받는다.


세터 메서드(setter method) 인스턴스 변수의 값을 설정하는 접근자 메서드이다. ▷ 게터메서드.


세트(set) Foundation 프레임워크에서 NSSet, NSMutableSet, NSCountSet 클래스로 구현되어 있는, 순서가 없는 독특한 객체들의 컬렉션이다.


셀렉터 (selector) 객체에 실행할 메서드를 선택하는 데 사용되는 이름이다. 컴파일된 셀렉터는 SEL 형이고 @selector 지시어로 생성할 수 있다.


수신자(receiver) 메시지가 보내지는 객체이다. 수신자는 호출되는 메서드 내에서 self 로 부를 수 있다.


수정 가능한 객체(mutable object) 값이 변할 수 있는 객체이다. Foundation 프레임워크는 수정 가능한 배열, 세트, 스트링 딕셔너리와 그에 대응되는 수정 불가능한 객체를 지원한다. ▷ 수정 불가능한 객체.


수정 불가능한 객체(immutable object) 값이 수정될 수 없는 객체이다. Foundation 프레임워크의 NSString, NSDictionary, NSArray 객체가 그 예이다 ▷ 수정 가능한 객체.


수퍼클래스(super class) 특정 클래스의 부모 클래스이다. ex) super


아카이빙(archiving) 객체의 데이터 표현을 저장해 두었다가 후에 복원할수 있도록 변환하는 과정이다.


오토릴리스 풀(autorelease pool) 풀이 릴리스될 때 릴리스 되어야 할 객체의 목록을 담고 있는 객체로, Foundation 프레임워크에 정의되어 었다. 객체에 autorelease 메시지를 보내면 객체를 풀에 추가할 수 있다.


외부 변수(extern variable) ▷ 전역 변수.


유니코드 문자(Unicode character) 수백만 개의 문자까지 포함하는 문자 모음에서 문자를 표현하는 표준이다. NSString과 NSMutableString 클래스는 유니코드 문자를 담고 있는 스트링을 다룬다.


인스턴스 메서드(instance method) 클래스의 인스턴스에 호출되는 메서드이다. ▷ 클래스 메서드.


인스턴스 변수(isntance variable) 인터페이스 부분에서 선언된 (혹은 부모에서 상속받은)변수이며,객체의 모든 인스턴스에 포함되어 었다. 인스턴스 메서드는 자신의 인스턴스 변수에 직접 접근할 수 있다.


인스턴스(instance) 클래스의 실제 표현이다. 보통 인스턴스는 클래스 객체에 alloc 이나 new 메시지를 보내는 것으로 생성된다.


인터페이스 부분(interface section) 클래스, 수퍼클래스, 인스턴스 변수, 메서드를 선언하는 부분이다. 각 메서드의 경우 인수 형과 반환 형도 선언된다. ▷ 구현 부분.


인터페이스 빌더(Interface Builder) Mac OS X 용 응용 프로그램 그래픽 유저 인터페이스 제작도구 이다.


자동 변수(automatic variable) 명령문 블록에 들어서고 나갈 때 자동으로 생성되고 릴리스되는 변수이다. 자동 변수는 자신이 정의된 블록 내로 범위가 제한되고 기본 초기값을 갖지 않는다. 키워드 auto 가 앞에 나오기도 한다.


자동 생성 메서드(synthesized method) 컴파일러가 자동으로 생성해주는 세터나 게터메서드 이다. Objective-C 2.0 에 추가되었다.


전역 변수(global variable) 메서드와 함수 바깥에서 정의된 변수로, 동일한 소스파일내의 어느 메서드나 함수, 그리고 그 변수를 extern 으로 선언한 다른 소스파일에서 접근할 수 있다.


전처리기 (preprocessor) 소스코드에서 #로 시작하는 특별한 전처리 명령문을 담고 있는 라인을 먼저 처리하는 프로그램이다. 보통은 #define 으로 매크로를 정의하거나 #import 와 #include 로 다른 소스파일을 포함하거나, #if, #ifdef, #ifndef 로 소스 라인을 조건에 따라 추가하는 기능들을 수행한다.


절차적 프로그래밍 언어 (procedual programming language) 데이터 세트에 작업을 수행하는 프로시저와 함수로 정의되는 스타일의 프로그램을 작성하는 언어이다.


접근자 메서드(accessor method) 인스턴스 변수의 값을 가져오거나 설정하는 메서드이다. 이 메서드를 사용하여 인스턴스 변수의 값을 설정하거나 가져오면, 데이터 캡슐화 방법론에 부합하게 된다.


정적 변수(static variable) 범위가 자신이 정의된 블록이나 모듈로 제한된 변수이다. 정적 변수는 기본 초기값이 0 이고 메서드나 함수호출간에 그 값을 유지한다.


정적 타이핑(static typing) 컴파일 시에 어느 객체가 어느 클래스에 속했는지 명시적으로 구분하는 것이다. ▷ 동적 타이핑.


정적 함수(static function) static 키워드로 선언된 함수로, 동일한 소스파일에 정의된 함수와 메서드에서만 접근할 수 있다.


존(zone) 데이터와 객체를 생성하기 위해 지정된 메모리 공간이다. 한 프로그램이 더 효과적인 메모리 관리를 위해 여러 개의 zone 을 사용할 수 있다.


지시어(directive) Objective-C 에서 @ 부호로 시작하는 특별한 구조이다. @interface, @implementation, @end, @class 등이 지시어의 예이다.


지역 변수(local variable) 자신이 선언된 블록으로 범위가 제한되어 있는 변수이다. 변수는 메서드,함수,명령문 블록에 대한 지역변수일 수 있다.


지역화(localization) 프로그램이 특정 지역에서 사용하기 적합하도록 만드는 과정이다. 보통 메시지를 그 지역의 언어로 번역하고 지역에 맞는 시간대, 통화 기호, 날짜 형식등을 처리해 주는 것이다.


지정된 초기화 메서드(designed initializer) 클래스나 서브클래스의 다른 모든 초기화 메서드가 최종적으로 호출하게 되는 메서드이다. 서브클래스에서는 super 메시지를 통해 호출한다.


추상 클래스(abstract dass) 서브클래스를 더 쉽게 만들도록 정의된 클래스이다. 인스턴스는 추상 클래스가 아니라 서브클래스 에서 만들어진다. ▷ 구상 클래스.


카테고리 (category) 특정 이름별로 분류된 메서드의 모음이다. 카테고리는 클래스의 메서드 정의를 모듈화 할 수 있으며, 기존 클래스에 새 메서드를 추가할 때도 사용할 수 있다.


캡슐화(encapsulation) ▷ 데이터 캡슐화.


컬렉션(collection) Foundation 프레임워크 객체이며, 배열, 딕셔너리, 세트로 되어 있다. 관련된 객체들을 분류하거나 다루는 데 사용된다.


컴파일 시(compile time) 소스코드가 분석되고 저수준 형식인 오브젝트 코드로 변환되는 시기이다.


컴포짓 클래스(composite class) 다른 클래스들의 객체들로 구성된 클래스이다. 보통 서브클래스 대신 사용된다.


코코아(Cocoa) Foundation 프레임워크와 Application Kit 프레임워크로 구성된 개발 환경이다.


코코아 터치(Cocoa Touch) Foundation 프레임워크와 UIKit 프레임워크로 구성된 개발 환경이다.


클래스 객체 (class object) 특정 클래스를 나타내는 객체이다. 클래스 메서드를 호출하기 위해 클래스 이름을 메시지의 수신자로 사용할 수 었다. 그 외의 경우 class 메서드를 클래스에 호출하여 클래스 객체를 생성할수 있다.


클래스 메서드(class method) 클래스 객체에 호출되는 메서드이며, 메서드 이름 앞에 더하기 부호(+)가 붙는다 ▷ 인스턴스 메서드.


클래스(class) 인스턴스 변수와 이 변수에 접근할수 있는 메서드의 모음이다. 클래스가 정의된 뒤, 프로그래머가 그 클래스의 인스턴스(객체)를 생성할 수 있다.


클러스터 (cluster) 비공개(private) 구상 클래스를 모아 그룹지어 주는 추상 클래스이다. 사용자에게 추상 클래스로 간소화된 인터페이스를 제공한다.


팩토리 객체 (factory object) ▷ 클래스 객체.


팩토리 메서드(factory method) ▷ 클래스 메서드.


포워딩(forwarding) 메시지와 그 인수를 다른 메서드에서 실행하도록 넘기는 과정이다.


포인터 (pointer) 다른 객체나 데이터 형을 참조하는 값이다. 포인터는 특정 객체나 값의 메모리 상의 주소로 구현되어 었다. 클래스의 인스턴스는그 객체 데이터가 자리 잡은 메모리 주소를 가리키는 포인터이다.


프레임워크(framework) 관련된 클래스, 함수, 프로토콜, 문서, 혜더파일 및 기타 리소스의 모음이다. 예를 들어, 코코아 프레임워크는 Mac OS X 에서 돌아가는 인터랙티브 그래픽 응용프로그램을 개발하는 데 사용된다.


프로토콜(protocol) 프로토콜을 채택하거나 받아들이려는 클래스가 모두 구현해야 하는 메서드의 목록이다. 프로토콜은 클래스 간 인터페이스를 표준화하는 방법을 제공한다 ▷ 공식 프로토콜, 비공식 프로토콜.


프로퍼티 리스트(property list) 여러 다른 형식의 객체를 표준화된 형식에 담은 것이다. 프로퍼티 리스트는 보통 XML 형식으로 저장된다.


프로퍼티 선언(property declaration) 인스턴스의 속성을 지정하는 방식으로, 메모리 누수가 없고 스레드에 안전한 접근자 메서드를 컴파일러가 생성하게 한다. 프로퍼티 선언은 런타임 시 동적으로 로드될 접근자 메서드의 속성을 정의하는 데도 사용할수 었다.


함수(function) 이름으로 구분되는 명령문 블록으로, 하나 이상의 인수를 값으로 건네받을 수 있으며 선택적으로 값을 반환할 수 있다. 지역(static) 함수는 자신이 정의된 파일에서만 호출되며, 전역(global) 함수는 다른 파일에서 정의된 함수나 메서드에서 호출할 수 있다.


헤더파일(header file) #import 문이나 #include 문을 사용하여 프로그램에 포함되는 파일이며, 공통 정의, 매크로, 변수 선언 등을 포함한다.


Application Kit 응용 프로그램의 유저 인터페이스를 개발하기 위한 프레임워크이며, 메뉴, 툴 바, 윈도우 등의 객체를 포함한다. 코코아의 일부로 보통 AppKit 이라고 불린다.


Foundation 프레임워크(Foundation framework) 응용 프로그램 개발의 기본을 형성하는 클래스, 함수, 프로토콜의 모음이며, 메모리 관리, 파일 및 URL 접근, 아카이빙 작업, 컬렉션, 스트링, 숫자, 날짜 객체 등의 기본 기능을 제공한다.


gcc 자유 소프트웨어 재단(Free Software Foundation , FSF)에 의해 개발된 컴파일러의 이름이다. gcc 는 C, Objective-C, C++ 등 많은 프로그래밍 언어를 지원한다. Mac OS X 에서 Objective-C 프로그램을 컴파일하는 데 사용되는 표준 컴파일러이다.


gdb gcc로 컴파일된 프로그램을 위한 표준 디버깅 도구이다.


id 모든형의 객체를 가리키는 포인터를 담을 수 있는 일반 객체 형이다.


nil id 형의 객체로, 유효하지 않은 객체를 나타내는 데 사용된다. 값은 0 으로 정의되어있다. nil 에 메시지를 보낼 수 있다.


NSObject Foundation 프레임워크의 루트 객체이다.


self 메서드 내에서 메시지의 수신자를 참조할 때 사용하는 변수이다.


super 메서드 안에서 수신자의 부모클래스를 참조하는데 사용되는 키워드이다.


UIKit 아이폰과 아이팟 터치용 응용 프로그램을 개발하는 데 사용되는 프레임워크이다. 윈도우, 버튼, 레이블과 같은 UI 요소들을 다루기 위한 클래스를 제공할 뿐 아니라, 가속도 센서나 터치 인터페이스와 같은 장치 특정 기능을 다루는 클래스도 정의한다. UIKit은 코코아 터치의 일부이다.


XML Extensible Markup Language 의 줄엄말이다. Mac OS X에서 생성된 프로퍼티 리스트의 기본 형식이다.


Notes