1급 객체

1 개요[ | ]

first-class object
1급 객체, 일급 객체, 일급 오브젝트, 퍼스트 클래스 객체
  • 프로그래밍에서 조작(생성, 대입 연산, 값 반환)을 제한 없이 사용할 수 있는 대상

2 조건[ | ]

다음 조건을 만족할 때 일급 객체

  • 무명의 리터럴로 표현 가능
  • 변수나 데이터 구조에 저장 가능
  • 파라미터로 전달 가능
  • 반환값(return value)으로 사용 가능
  • 할당에 사용한 이름과 관계없이 독자적으로 존재 가능
  • 런타임간 구성 가능
동적으로 프로퍼티 할당 가능
  • 분산 프로세스간 전송 가능
  • 실행 중인 프로세스 밖에 저장 가능

3 역사[ | ]

일급/이급 객체의 개념은 영국의 컴퓨터 과학자 크리스토퍼 스트레이치에 의해 1960년대에 처음 소개되었다. 그는 명시적으로 일급 객체의 개념을 정의하지는 않았으나, Algol 프로그래밍 언어의 실수(Real number)와 프로시저를 비교함으로써 일급 객체의 개념에 대해 처음으로 언급하였다.

일급 객체와 이급 객체. 프로그래밍 언어 Algol에서 실수(Real number)는 연산식(Expression)에 사용되거나 변수에 대입될 수 있으며, 프로시저에 매개변수로 넘겨질 수 있다. 하지만 프로시저의 경우 프로시저 콜에서 호출 대상 혹은 매개 변수로 등장할 수 있을 뿐, 프로시저의 리턴 값으로 전달되거나 연산식 내에서 사용될 수는 없다. 이런 측면에서 Algol에서의 프로시저는 이급 시민인데, 변수나 연산식 등을 통한 간접적인 등장이 허용되지 않으면서 스스로 '직접' 나타나야 하기 때문이다.

1990년대에 들어 미국의 컴퓨터 과학자 라파엘 핀켈이 이급 및 삼급 객체에 대한 정의를 제안한 바가 있으나, 이에 대한 정의가 널리 받아들여지고 있지는 않는 상황이다.

4 같이 보기[ | ]

5 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}