Whiteship's Note

'객체'에 해당되는 글 1건

  1. 2006.11.01 What is Object? (12)

What is Object?

Java : 2006.11.01 17:55


얼마전 스터디에서 Object의 정의에 대한 열띤 토론이 있었습니다. 추상적인 개념에 대한 토론이라 어떤 결론을 내릴 수가 없었습니다. 전 "기존에 사용되는 의미"에 집중해서 Object가 무엇인지 살펴보도록 하겠습니다.

Object에 대한 정의는 Java Tutorial에 한페이지 정도의 분량으로 설명이 돼있습니다. Object는 Object-Oriented 기술의 핵심이며 실제 세상의 Object는 주변에서 둘러 볼 수 있는 모든 것이라는 말이 첫문장에 나옵니다.

실제 세상의 Object는 크게 두가지 특성이 있는데 바로 상태행동이다. 실제 세상이 객체가 가지는 상태와 행동을 식별해내는 것이 Object-Oriented Programing을 시작하는 가장 중요하다. "이 객체는 무슨 상태를 가질 수 있을까?" "이 객체는 무슨 행동을 할까?" 등을 질문해보면 실제 세상의 Object가 얼마나 복잡한가 알 수 있을 것이다. 그리고 어떤 Object는 다른 Object를 가지고 있을 수도 있을 것이다. 이러한 관찰을 모두 Object-Oriented Programming 세상으로 옮기면 된다.

A circle with an inner circle filled with items, surrounded by gray wedges representing methods that allow access to the inner circle.

위에 보이는 그림은 실제 세상이 아닌 소프트웨어에서의 Object를 표현한 것이다. 소프트웨어에서의 Object는 실제 세상의 Object와 매우 비슷하다. 이들(소프트웨어의 Object) 또한 상태와 행동을 가지고 있다. 이 Object는 상태를 Field에 담아 두고 행동을 Method로 표현한다. 여기서 Field는 프로그래밍에서 변수에 해당하며 Method는 몇몇 프로그래밍 언어에서 Function으로 표현되기도 한다. 메소드는 객체의 내부 상태에 작용을 가하며 객체와 객체간 의사소통의 기반이 된다. 객체의 상태를 숨기고 모든 작용은 객체의 메소드를 통해서 가능하도록 하는 것은 data encapsulation(은닉화)로 알려져 있으며 객체 지향의 기본 원리에 해당한다.

객체를 사용하여 코딩할 때의 장점들은 다음과 같다.
  • Modularity : The source code for an object can be written and maintainedindependently of the source code for other objects. Once created, anobject can be easily passed around inside the system.
  • Information-hiding: By interacting only with an object's methods, thedetails of its internal implementation remain hidden from the outsideworld.
  • Code re-use: If an object already exists (perhaps written by anothersoftware developer),you can use that object in your program. This allows specialists toimplement/test/debug complex, task-specific objects, which you can thentrust to run in your own code.
  • Pluggability and debugging ease: If a particular object turns out to be problematic, you can simply remove it from your application and plug in a different object as its replacement. This is analogous to fixing mechanical problems in the real world. If a bolt breaks, you replace it, not the entire machine.

마지막 부분은 원문이 더 보기가 좋을 것 같아서 그냥 긁어 왔습니다.(사실은 귀차니즘?ㅋ) Java는 객체 지향 언어이며(완벽하진 않은 것 같습니다만..잘 몰라서 이렇게 밖에 말을 못하겠네요.) Java Tutorial에 위와 같이 정의를 해두고 있습니다. 이건 마치 법이나 마찬가지라고 생각합니다. Java의 근본인 Object에 대한 개념을 나름대로의 개념으로 재정의 하겠다는 것은 위험한시도라고 생각합니다. :)

'Java' 카테고리의 다른 글

local inner class의 예  (0) 2006.11.05
객체지향의 구멍 static  (0) 2006.11.04
i++와 i=i+1 속도 비교  (0) 2006.11.02
Comparator를 사용하여 비교하기.  (0) 2006.11.02
Arrays.sort() & Collections.sort()  (2) 2006.11.02
What is Object?  (12) 2006.11.01
Agile Java 2장 연습문제 풀기  (2) 2006.10.29
Lazy Initialization 언제 사용 해야 될까요?  (9) 2006.10.28
Agile Java 1장 연습문제 풀기  (2) 2006.10.27
JUnit 3.8 과 JUnit 4의 차이  (0) 2006.10.27
Reference의 위험성  (10) 2006.10.27
top

TAG ,
  1. Favicon of https://px.tistory.com BlogIcon 김민재 2006.11.02 02:02 신고 PERM. MOD/DEL REPLY

    로마에 가면 로마법을... 인가..
    갑자기 골프가 생각나... 골프는 거리보단 방향이거든..

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.11.02 08:57 신고 PERM MOD/DEL

    정확하게 찝어내셨네요. :)

    골프는 모르지만 인생도 빨리 가는 것보다 방향이 중요하다는 말을 들어본적 있는데 그 말이 생각나네요.

  2. Favicon of http://hsi8007.tistory.com BlogIcon 한성일 2006.11.06 11:18 PERM. MOD/DEL REPLY

    흠 behavior가 없는 object는 object가 아닌가? 하는 궁금증
    어떻게 생각하시남?ㅎㅎ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.11.06 11:46 신고 PERM MOD/DEL

    흠~ 특성만 있는 경우를 말씀하시는 건가요? null도 객체라고 하던데요. :) 농담이구요.

    질문하시는 이유는..
    이들(소프트웨어의 Object) 또한 상태와 행동을 가지고 있다.

    이 부분 때문이신지요? 위 문장에 must나 have to, should와 같은 조동사는 없었습니다. 하지만 그렇다고 해서 행동이 없는 객체가 존재한다고 생각하진 않습니다.

    모든 클래스는 기본적으로 Object 클래스를 상속 받고 있으며 Object 클래스에는 기본적인 메소드 몇가지 들이 있지요.

  3. Favicon of https://hsi8007.tistory.com BlogIcon 한성일 2006.11.06 17:47 신고 PERM. MOD/DEL REPLY

    헉 농담이었군-_-;; 내블로그 답글목록에선 [하던데요 :)] 여기까지만 나와서; 한참 생각해보다 왔네;;
    그렇군 모든 클래스는 오브젝트 클래스를 상속 받는걸 깜박했어 메소드가 있구나 저걸 생각하지 못하고 있었다~ 좋은 답변이되주었어 ㅎㅎㅎ
    결국 여긴(java) 로마였어 ㅜ.ㅜ
    (잠시 api object 좀 찾아 보다가;)
    하지만 내가 상상한 로마가 될수도 있네;;ㅋ 이런 재미나 요즘
    그냥 망상에 빠져 헛소리한다라고 생각해 주삼ㅋㅋㅋ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.11.06 22:34 신고 PERM MOD/DEL

    :) 모든 일엔 원인이 있는거죠. 형이 그런 생각을 하는데에도 원인이 있겠죠. 그리고 그 결과는 아무도 모르는 것이고..

    전 전혀 형이 망상이나 헛소리를 한다고 생각하지 않습니다. 오히려 그러한 용기와 관점이 전 부럽습니다.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.11.06 22:35 신고 PERM MOD/DEL

    아 그리고 null은 정말 객체 일지도 모릅니다. Daum DNA에 올라온 두번째 링크를 보면 그에 대한 이야기가 조금 나와 있습니다. 헤헷;

  4. Favicon of https://hsi8007.tistory.com BlogIcon 한성일 2006.11.06 17:59 신고 PERM. MOD/DEL REPLY

    흠 그런데 생각해보니 다중상속?-_-a
    따지고 보면 그렇군; 머 어쨌든 수고~

  5. Favicon of https://hsi8007.tistory.com BlogIcon 한성일 2006.11.12 22:41 신고 PERM. MOD/DEL REPLY

    흠 따지고 보면 다중상속? 이 아닌거 같다ㅋ
    extends를 하면 object를 따로 extends하지 않겠지;ㅋ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.11.12 23:05 신고 PERM MOD/DEL

    ?? 흠.. 무슨 말씀이신지..

    Object <- Parent <- Child 이거 말씀하시는 건가요? Child가 Parent를 상속 받으면 Object를 상속 안 받은 것 처럼 보이지만 사실은 Parent가 Object를 상속 받았기 때문에 Child도 결국 객체라는 것??

  6. Favicon of https://hsi8007.tistory.com BlogIcon 한성일 2006.11.13 09:40 신고 PERM. MOD/DEL REPLY

    ㅇㅇ모든 object는 Object 클래스를 암묵적으로 상속 받는다 라는 걸 짧게 생각했을때는
    그러면 parent가 있는 클래스는 Object와 parent로 부터 다중상속을 받는거야?
    라고 짧게 생각을 했었지만
    당연히 그게 아니라는
    child도 결국 객체 라는게 아니라(비슷하지만) child는 따로 Object를 상속받지
    않는다. parent로부터 자동으로 받기때문에
    짧은 생각에 내 뱉은 말이라 수정을 해야겠다 생각했어서ㅎㅎ
    즐거운 한주가 됩시다~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.11.13 10:10 신고 PERM MOD/DEL

    :) 형도 즐거운 한 주 보내시고 주말에 뵈요 ㅎㅎ

Write a comment.