Development/JavaEssential

객체(Object)와 개체(Entity)

linuxism 2010. 12. 21. 16:34

객체(Object)

객체지향 프로그래밍에서 객체는, 프로그램 설계 단계에서 최초로 생각해야 할 것으로서, 결국 프로세스에서 유도된 코드 단위들이다. 중간에, 각 객체는 일반화된 객체 클래스로 만들어지고 더욱 일반화된 클래스가 정의됨으로써, 객체가 모델을 공유하고 그 코드에서 클래스 정의를 재사용할 수 있게 한다.

각각의 객체는 특정 클래스 또는 그 클래스의 자체 메쏘드나 프로시저 그리고 데이터 변수를 가지고 있는 서브클래스가 실제로 구현된 것, 즉 인스턴스이다. 그러므로 객체는 실제로 컴퓨터 내에서 수행되는 것을 말한다.


개체(Entity)

일반적으로, entity란 존재하는 것, 즉 실체를 의미한다. 이 용어의 어원은 라틴어의 ens에서 나왔으며, 사물의 존재와 그것의 품질 사이에 구별을 짓는다. entity가 되기 위해 필요한 일은, 그저 존재하는 것이 전부이다. 어떤 것이 존재한다는 사실은, 그것이 다른 존재나 entity로부터 분리되어있음을 암시하는 듯하다. 프로그래밍이나 공학에서, 그리고 아마도 많은 다른 상황들에서, 이 용어는 명확한 사물이든, 이름이 붙여져 있지 않은 추상화된 아이디어든 관계없이 단일체를 인식하는데 사용된다. 칠판에 글씨나 그림을 쓰며 토의를 할 때, 흔히 아직 이름이 붙어있지 않고 단지 "entity"라고만 표현되어 있는 무엇인가를 그릴 수 있다 (만약, 그 entity가 토의가 진행되어 나중에 귀속 품질과 이름을 갖게 되었다면, 더 이상 그것을 "entity"라고 부를 필요는 없을 것이다). 일부 용법에서, entity는 객체지향 프로그래밍에서 사용되는 객체와 비슷한 의미를 갖는다. 아래에 일부 용례를 나열하였다.

  1. SGML에서, entity는 특정 문자나 표시법을 선택하거나 표현하기 위해 형식 지정 프로그램에 의한 효과를 가지고 있는 특정 문자열을 가리킨다. 예를 들어 아래의 특정한 entity는 

    " 

    다음과 같은 표현을 만들어 낸다.



    이 용법에서, entity는 선택되거나, 표시되거나, 인쇄되어야할 고유한 글꼴을 지정하는 어떤 문자열이다. 이러한 문자열을 위해 하나의 낱말이 필요했으며, entity는 여러모로 편리하다. HTML에서, 어떤 특별한 entity나 문자열들에는 이름이 주어질 수 있는데, 이 경우 각 entity들은 "명명된 entity"라고 불린다.
  2. 관계형 데이터베이스에서, entity는 저장될 수 있는 어떤 데이터에 관한 사람, 장소, 또는 사물이다.
  3. 데이터 모델링에서, entity는 분류될 수 있고, 다른 entity들에 대해 정해진 관계를 가지는 데이터 단위이다.
  4. OSI 네트웍 통신 모델에서, entity는 정의된 프로토콜을 사용하여 다른 entity들과 교신하는 활성화된 구성요소이다.
  5. IBM의 RACF 보안 제품에서, entity는 RACF에게 한정지어지는 사용자, 그룹, 또는 자원을 말한다.
  6. FORTRAN에서는, 프로시저, 연산자, 인터페이스 블록, 입출력 단위, 부호화 상수, 문장 번호 등과 같은 거의 모든 프로그램 구성요소를 entity라고 지칭한다.


인간이 생각하는 개념 또는 정보의 세계에서는 의미있는 정보의 단위로서, 파일 처리시스템에서는 한건의 자료를 구성하는 레코드가 하나의 엔티티에 해당한다.

사전적 의미로는 ‘실체’, ‘존재’, ‘자주적인 것’, ‘본질’이다. 데이터베이스에서는 엔티티를 ‘실체’ 또는 ‘개체’라고 표현한다. 엔티티로 구성된 엔티티 집합이란 정보의 세계에서는 의미 있는 정보의 단위 또는 우리가 관리하고자 하는 두 개 이상의 속성과 두 개 이상의 개체를 지닌 동질성의 의미를 가진 독립적인 집합이다. 여기서 ‘관리하고자 하는’이란 말은 엔티티 집합을 파악하는데 주어가 된다. ‘두 개 이상의 속성’이란 뜻은 한 개의 속성만으로는 개체가 가지는 의미가 명확하지 않다(개체가 될 수 없다)는 것이 되고, ‘두 개 이상의 개체를 지닌’이란 뜻은 한 개의 개체만 있다면 관리의 대상이 될 수 없음을 의미한다. ‘독립적인 집합’이란 뜻은 다른 집합과 구별할 수 있는 어떤 특징이 있다는 것이다. 예를 들어, 갑, 을, 병, 정 4명의 학생은 각각의 엔티티이고 이들이 ○○고등학교 2학년 1반에 재학중이라고 한다면 이들은 한 조직(학교) 내에서 존재하는 “다른 사물과 구별 지을 수 있는 어떤 특정한 관련성으로 묶일 수 있는 하나의 집합”으로 표현된 것이다.

파일 처리시스템에서는 한건의 자료를 구성하는 레코드가 하나의 엔티티에 해당한다. 각 엔티티간의 관련을 릴레이션쉽(relationship)이라고 하며, 복수 개의 엔티티간의 관련을 도식화 한 것을 엔티티 관계도(ERD:Entity Relationship Diagram)라고 한다. 엔티티 관계도는 파일시스템을 설계하거나 데이타베이스의 구조를 결정하는 데 중요한 자료로 활용된다. 정보통신 분야에서는 계층구조의 프로토콜에서 사용되는 서비스를 취급하는 단위를 지칭한다. 즉, OSI의 계층 구조에서 서비스를 받거나 서비스를 제공하는 하나의 단위를 일컫는다. 


비교
전산에서 개체는 entity, 객체는 object로 번역합니다. 간단하게 비교하자면 entity는 정보를 표현하느 단위로 object는 사물(전산에서는 소프트웨어 또는 시스템이 되겠네요)을 표현하는 단위입니다. 

재미있는 것은, 현제 객체라는 개념이 객체지향 프로그래밍에서 나타난 개념으로 생각하는 사람들이 많은데, 객체라는 개념은 데이터, 오퍼레이션(함수 등)등을 통틀어 소프트웨어를 구성하는 한 요소를 의미하고 있습니다. 



다음은 위키피디아 백과사전의 검색 내용입니다. 



철학 또는 전산학에서의 개체(영어:entity)는 인간의 개념 또는 정보의 세계에서 의미있는 하나의 정보 단위이다. 사물의 본질적인 성질을 속성이라고 하며, 관련있는 속성들이 모여서 의미있는 하나의 정보 단위를 이룬 것이 바로 개체에 해당한다. 파일시스템이나 데이터베이스에서의 레코드가 개체에 해당한다. 개체들 사이의 연관성을 관계라고 하며, 개체와 관계를 나타낸 모델을 개체-관계 모델라고 한다. 속성이라는 용어 대신 영어의 attribute를 그대로 한글로 옮겨 애트리뷰트라고 하기도 한며, 개체라는 용어 대신 영어의 entity를 그대로 한글로 옮겨 엔티티라고 하기도 한다.