오브젝티브-C
위키백과 ― 우리 모두의 백과사전.
오브젝티브-C (Objective-C, 종종 ObjC로 표기) 언어는 C 프로그래밍 언어에 스몰토크 스타일의 메시지 구문을 추가한 객체 지향 언어이다.
1980년대 초에 브래드 콕스(Brad Cox)가 만들었다. 1988년에 넥스트사의 워크스테이션 NeXT의 사용자 인터페이스인 NextStep에 사용됨으로써 널리 알려지기 시작하였으며, 1996년 애플이 넥스트 사를 인수한 후 맥 오에스 텐의 코코아 애플리케이션 프레임워크의 표준 프로그래밍 언어로서 쓰이고 있다.
[편집] 문법
오브젝티브-C는 C 위에 덮인 얇은 레이어로 볼 수 있다. 오브젝티브-C는 C++와 달리 C 언어의 제한적인 상위집합이다. 그러므로, 어떠한 C 프로그램도 오브젝티브-C 컴파일러를 통해 컴파일할 수 있다. C 언어와 스몰토크 양쪽에서 유래한 문법을 사용하고 있다. (사전처리preprocessing, 표기expressions, 함수 선언function declarations, 그리고 함수 호출function calls등과 같은) 대부분의 문법은 C에서 상속된 것이며, 객체지향적인 기능들은 스몰토크 방식의 메시지 전달을 통해서 구현되었다.
C++와는 달리 다중상속을 지원하지 않으며, 그 대신 자바의 인터페이스에 해당하는 프로토콜(protocol)을 정의할 수 있다. 또한 카테고리(category)를 통해 기존 클래스에 새로운 메쏘드를 추가함으로써 클래스의 기능을 확장할 수 있다. 이는 상속을 통해서만 기능을 확장할 수 있는 대다수의 객체지향 언어와 크게 구별되는 특성이다. C++나 자바 등과는 달리 객체에 대해서 완전한 동적 형 변환(dynamic typing)을 지원한다.
[편집] 메시지
메시지는 객체지향 프로그래밍을 지원하기 위해 내부적으로 추가된 문법이다. 오브젝티브-C의 객체 지향 프로그래밍에 대한 모델로 메시지를 객체에 전달하는 방식을 채용하고 있다. 이는 스몰토크와 매우 유사한 모델이다. 하지만 이는 C++과 다른 언어에서 사용하는 시뮬라(Simula) 프로그래밍 모델과는 구별되는 것이다. 이러한 특징은 중요한 의미를 갖는다. 오브젝티브-C의 기본적인 차이점은 메소드를 호출하는 것이 아니라 메시지를 전달한다는 것이다.
메소드 doSomething를 갖는 클래스인 obj라는 개체가 구현된다면 이는 메시지 doSomething에 대해서 "응답"하는 것이다. C++에서는 doSomething 메시지를 obj로 보내는 행위는 다음과 같은 코드를 필요로 할 것이다:
obj.doSomething();
오브젝티브-C에서는 다음과 같이 쓰인다:
[obj doSomething];
이러한 작동 방식은 심지어 객체가 메시지에 응답할 수 없다 하더라도 그 개체에 메시지를 보낼 수 있도록 해준다. 오브젝티브-C는 동적 형 변환을 사용한다. 이는 모든 메소드가 사전에 정의되어야만 호출이 가능한 (C++이나 자바와 같은) 정적/명시적 형 변환을 사용하는 언어와 다른 점이기도 하다.
|
|
|
|---|---|
| 산업용 | 델파이 · 루비 · 리스프 · 비주얼 베이직 · 스몰토크 · 어셈블리 · 얼랑 · 에이다 · 오브젝티브-C · 자바 · 자바스크립트 · 코볼 · 파이썬 · Perl · 포트란 · ABAP · AWK · C · C++ · C# · PHP · PL/SQL · SAS · sh · VB.NET |
| 교육용 | 로고 · 스킴 · 에펠 · 파스칼 · 프롤로그 · 하스켈 · ML |
| 역사적 의미가 있는 언어 |
베이직 · 시뮬라 · 알골 · 클리퍼 · 파워빌더 · APL · MUMPS · PL/I |
![]() |
이 글은 컴퓨터에 관한 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다. |


