none
[C#][TIP] 개체(個體)와 객체(客體)의 차이 RRS feed

답변

  • 인터넷에서 프로그래밍 관련 문서를 읽거나 프로그래밍 서적을 읽으면 흔히 개체 (個體) 와 객체 (客體) 가
    혼용되어
    써지는 것을 종종 볼 수 있습니다. 그렇다면 이 둘은 같이 써도 되는 것일까요? 아니라면 그 차이는
    무엇일까요?

    이 것을 이해하기 위해서는 객체 지향 프로그래밍 (Object-Oriented Programming; OOP) 이라는 개념을 정확하게
    아실 필요가 있습니다.

    객체지향 프로그래밍은 프로그래밍 패러다임 (Programming Paradigm) 의 일종으로, 초창기, 즉 프로그래밍 언어
    개념이 처음 생기고 난 뒤 한참 동안은 순차적 프로그래밍 (줄 순서대로 모든 것을 처리하는 방식) 또는
    것의 발전형인 (Procedure 개념이 도입된) 절차 지향 프로그래밍 (Procedural Programming) 만을
    이용했었습니다.
    그러나 프로그램의 유지 보수를 보다 간편하게 하기 위해서, 그리고 다중 작업 (Multi-tasking) 의
    중요성이
    부각되기 시작하면서 객체 지향 프로그래밍 (OOP) 이 등장합니다.

    객체 지향 프로그래밍 (OOP) 의 핵심은 프로그래머가 코딩한 한줄 한줄이 모든 기능을 하는 것이 아니라,
    각각의
    부분 (Part) 으로 기능을 분담하고, 그 기능이 필요하면 해당 부분을 객체 (Object) 로 하여 호출한다는
    점입니다.
    (이와 반대되는 개념인 주체 지향 프로그래밍 [Subject-Oriented Programming; SOP] 도 최근 등장한
    프로그래밍
    패러다임 중 하나로, 엄연히 존재하는 개념입니다.)
    따라서 OOP 에서 말하는 Object (객체) 는
    '
    주체 (일반적으로 '프로그램') 에 의해 사용되어지는 하나의 부분 (객체) ' 를 강조하여 이르는 말인
    것입니다. 때문에 프로그래밍의 모든 구성 요소를 사실
    객체라고 불러도 되지만, 일반적으로는 객체지향
    프로그래밍을 따르고자 만든
    '부분 (Part)' 의 주형(鑄型)인 클래스 (Class) 으로부터 생성된 개체를 프로그램이 상대적으로 이를 때만 객체라고 부릅니다. (만일 시점을 프로그램 전체가 아닌 개체로 한다면 개체 입장에서는
    자기 자신이 '객체' 가 아니라 '주체' 인 것이지요.)

    이야기가 많이 복잡해졌는데, 요약하면 다음과 같습니다.

     

    - 개체(個體): 프로그래밍에서 이르는 모든 요소. 객체지향 프로그래밍으로 국한시켜 생각해보면
                       
    인스턴스 (Instance : Class 의 실체) 와 같다.

    - 객체(客體): 개체를 취급할 때 주체 (프로그램 또는 해당 개체를 호출하는 다른 개체)
                       측에서 상대적으로 
    이르는 말.

     

    따라서 엄연한 차이가 있는 말입니다. 범위로 표현할 수 있는 개념이 아니라, 애초에 다른 논점에서의 용어인
    것이죠.
    하지만 결국 따지고 보면 개체객체나 실용적인 측면에서는 가리키는 것이 모두 동일하기 때문에 종종
    혼용하여 쓰입니다.

    비주얼 베이직 6.0 에서 Object 는 개체라는 말로 주로 번역됩니다. 하지만 객체라는 말을 사용하여도 상관은
    없습니다.
    바라보는 관점의 차이이지, 둘이 다른 것은 아니니까요.

     

    • 답변으로 표시됨 devlife 2012년 6월 29일 금요일 오전 10:52
    2012년 6월 29일 금요일 오전 10:52

모든 응답

  • 인터넷에서 프로그래밍 관련 문서를 읽거나 프로그래밍 서적을 읽으면 흔히 개체 (個體) 와 객체 (客體) 가
    혼용되어
    써지는 것을 종종 볼 수 있습니다. 그렇다면 이 둘은 같이 써도 되는 것일까요? 아니라면 그 차이는
    무엇일까요?

    이 것을 이해하기 위해서는 객체 지향 프로그래밍 (Object-Oriented Programming; OOP) 이라는 개념을 정확하게
    아실 필요가 있습니다.

    객체지향 프로그래밍은 프로그래밍 패러다임 (Programming Paradigm) 의 일종으로, 초창기, 즉 프로그래밍 언어
    개념이 처음 생기고 난 뒤 한참 동안은 순차적 프로그래밍 (줄 순서대로 모든 것을 처리하는 방식) 또는
    것의 발전형인 (Procedure 개념이 도입된) 절차 지향 프로그래밍 (Procedural Programming) 만을
    이용했었습니다.
    그러나 프로그램의 유지 보수를 보다 간편하게 하기 위해서, 그리고 다중 작업 (Multi-tasking) 의
    중요성이
    부각되기 시작하면서 객체 지향 프로그래밍 (OOP) 이 등장합니다.

    객체 지향 프로그래밍 (OOP) 의 핵심은 프로그래머가 코딩한 한줄 한줄이 모든 기능을 하는 것이 아니라,
    각각의
    부분 (Part) 으로 기능을 분담하고, 그 기능이 필요하면 해당 부분을 객체 (Object) 로 하여 호출한다는
    점입니다.
    (이와 반대되는 개념인 주체 지향 프로그래밍 [Subject-Oriented Programming; SOP] 도 최근 등장한
    프로그래밍
    패러다임 중 하나로, 엄연히 존재하는 개념입니다.)
    따라서 OOP 에서 말하는 Object (객체) 는
    '
    주체 (일반적으로 '프로그램') 에 의해 사용되어지는 하나의 부분 (객체) ' 를 강조하여 이르는 말인
    것입니다. 때문에 프로그래밍의 모든 구성 요소를 사실
    객체라고 불러도 되지만, 일반적으로는 객체지향
    프로그래밍을 따르고자 만든
    '부분 (Part)' 의 주형(鑄型)인 클래스 (Class) 으로부터 생성된 개체를 프로그램이 상대적으로 이를 때만 객체라고 부릅니다. (만일 시점을 프로그램 전체가 아닌 개체로 한다면 개체 입장에서는
    자기 자신이 '객체' 가 아니라 '주체' 인 것이지요.)

    이야기가 많이 복잡해졌는데, 요약하면 다음과 같습니다.

     

    - 개체(個體): 프로그래밍에서 이르는 모든 요소. 객체지향 프로그래밍으로 국한시켜 생각해보면
                       
    인스턴스 (Instance : Class 의 실체) 와 같다.

    - 객체(客體): 개체를 취급할 때 주체 (프로그램 또는 해당 개체를 호출하는 다른 개체)
                       측에서 상대적으로 
    이르는 말.

     

    따라서 엄연한 차이가 있는 말입니다. 범위로 표현할 수 있는 개념이 아니라, 애초에 다른 논점에서의 용어인
    것이죠.
    하지만 결국 따지고 보면 개체객체나 실용적인 측면에서는 가리키는 것이 모두 동일하기 때문에 종종
    혼용하여 쓰입니다.

    비주얼 베이직 6.0 에서 Object 는 개체라는 말로 주로 번역됩니다. 하지만 객체라는 말을 사용하여도 상관은
    없습니다.
    바라보는 관점의 차이이지, 둘이 다른 것은 아니니까요.

     

    • 답변으로 표시됨 devlife 2012년 6월 29일 금요일 오전 10:52
    2012년 6월 29일 금요일 오전 10:52
  • 일반적으로 객체지향 프로그래밍을 하는 개발자들에게 다음과 같은 의미로 사용이 됩니다.
    물론 다 같은 Object 또는 Instance 라는 의미로 볼 수 있지만, 작은 차이가 있습니다.

    - 개체 : 명세서와 같은 일반적인 클래스 또는 이러한 집합??
               예) class A              A 라는 개체

    - 객체 : 실제로 개체가 생성된 경우.. 이를 인스턴스라고 일컬음
               예) A a = new A();                  A 라는 개체가 생성된 a 라는 객체

    감사합니다.^^


    엄준일 (Junil, Um) Microsoft Visual Studio ALM MVP (Team System) Personal Blog : http://blog.powerumc.kr Visual Studio Korea Team Blog : http://vsts2010.net


    • 편집됨 엄준일 2012년 7월 13일 금요일 오후 2:57
    2012년 7월 13일 금요일 오후 2:56