클래스(Class)는 일반명사이다. 일반명사는 저 사람~ 저 물건~ 처럼 유일한 사물을 가르키는 단어가 아니다. 사람, 나라, 자동차, 컴퓨터처럼 사물을 공통적으로 부를 수 있는 단어로 묶은 것이다, 예를 들어 맥북, 센스, X노트 등으로 불리는 고유명사인 사물은 노트북이란 일반명사로 묶어서 부른다.

노트북, 휴대폰, 자동차처럼~ 우리가 부르는 일반명사는 명확하게 어느 사물을 가리켜 부르는 것이 아니고 뭉뚱그려 부르기 때문에 그 실체가 애매모호하다. 일반명사는 명확하게 가리키며 부를 수 있는 눈앞에 존재하는 사물이 아니며 우리 인간의 사고과정을 통해 한단계 추상화시킨 존재이다.

그래서 클래스는 아직 사람 머릿속에 존재하는 개념이고 아직 객체로 생성하여 세상에 나온 개념은 아니다. 객체지향 언어인 자바로 프로그래밍할때도 마찬가지이다. 우리가 객체 선언할때

Notebook macbook =  new Notebook();

이라고 선언하는데 여기서 Notebook은 아직 세상에 나온 객체가 아닌 일반명사로 존재하는 클래스이고 new Notebook()을 통해 macbook 이 생성되었을 때 비로소 macbook이라는 유일한 고유명사 객체로 활약한다.

문득 햇갈리기 시작했다. 객체와 클래스의 본질적인 차이를 생각하다보니 생각하지 못한점이 발견됐다.
 
[전형적인 상속 구성도]

예전에 종종 위와 같은 클래스 다이어그램을 그려놓고 객체지향 설계에 대해 생각한 적이 있다. 그런데 위와 같은 클래스 다이어그램은 내가 이해하고 설명한 지금까지의 내용을 어긴 그림이 된다. 휴대폰이 추상적인 개념인 클래스이고 블랙잭, 아이폰, 햅틱이 좀더 구체적인 고유명사 객체일 것인데, 저 그림은 객체 선언할때 변수명으로 선언해야할 고유명사 블랙잭, 아이폰, 햅틱 등도 클래스로 정의한것이 되어버렸다.

하지만 좀더 생각해보니 무엇을 잘 못 생각했는지 알 수 있었다. 블랙잭, 아이폰, 햅틱은 휴대폰중 유일한 대상을 지칭한 고유명사인것처럼 보이지만 사실은 블랙잭등도 휴대폰으로부터 좀더 구체화된 일반명사였다는 것이다.

Handphone blackjack1 =  new Blackjack();

위처럼 진정한 고유명사는 ‘블랙잭 시리얼번호 #1’여야 한다. 그야말로 세상에 유일한 하나의 존재가 객체인것이다.

그래서 클래스는 일반명사이고 객체는 고유명사이다. 클래스(Class)는 우리 인간의 사고과정을 통해 한단계 추상화시킨 일반명사이고, 객체(Object)는 세상에 유일하게 존재하는 모든 고유명사이다.


산골이 덧) 이 글은 수필 객체지향이라는 책쓰기용 원고의 일부라서 펌은 불허합니다. 이 글의 원고는 1차로 쓴것을 그대로 올려서 다듬어지지 않았습니다. 못써도 이해해주시고요. 지금 올리는 것은 공부한것을 독자와 공유하고 객체지향 개발자님의 조언을 받기 위해서입니다. 혹시 내공이 부족해서 미흡한 내용이 있을것 같습니다. 그래서 혹시 시간되시면 조언 부탁드립니다. ^ ^; 그리고 관심있는 출판사 관계자분의 연락도 환영합니다. I출판사만 믿습니다. ^ ^;
신고
Posted by 산골
산골 블로그 소개 저는 하얀머리 개발자와 작가를 꿈꾸는 블로거 산골 입니다. 프로그램 개발자로서 저의 관심사는 개발자의 숨통을 트여준 아이폰 개발, 철학과 같은 깊이가 있는 객체지향 방법론입니다. 글쓰기와 수영을 좋아합니다. 블로그를 통해 관심사를 공유합니다. 제 블로그에 관심 있으시면 아래 RSS나 즐겨찾기로 편하게 구독하세요.

rss Bookmark and Share

댓글을 달아 주세요

  1. 2009.06.30 11:52  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • BlogIcon 산골 2009.06.30 21:48 신고  댓글주소  수정/삭제

      비밀님 오늘도 예리한 감수 감사드립니다. ^ ^
      근데 비밀님~! 깜짝놀랐어요..
      그렇지 않아도 내일 발행할 글이 '추상화'에 대한
      글이거든요.
      정말 객체지향하면 추상화가 빼놓을수 없는 요소라
      추상화에 대해 많은 고민하여 쓴글이 있습니다.
      그글 읽어보시면 비밀님이 해주실 말씀이 많을것 같아요.
      비밀님도 관련글을 정리하신다고 하니 저도 도움 받고
      내일 올리는 글은 비밀님의 정리하는글에도 도움이 조금
      되지 않을까 기대합니다.

      그럼 내일 추상화에 대한 글을 올려보겠습니다.에고..
      틀린대 없을라나..@@;

  2. BlogIcon Green 2009.06.30 13:45 신고  댓글주소  수정/삭제  댓글쓰기

    오랜만에 들렀습니다..^^
    여전히 친근한 글솜씨를 뽐내시는군요..^^
    쉽고 이해하기 쉬운 내용이네요..
    제가 자바 배울때 이런 내용의 책이 있었으면 보다 더 쉽게 배웠을 텐데요...
    제가 내공이 부족해 조언드릴것은 없구요...
    쉬우면서도 심도있는 내용의 책 만들어 주십시요...

    • BlogIcon 산골 2009.06.30 21:50 신고  댓글주소  수정/삭제

      그린님 어서오세요..저는 그린님 너무 좋아요
      그린님은 제가 한번 뵙고 싶은 온라인 지인 1위에요~!
      격려 감사드리고요..
      아참 그리고 최근 400혼영 완주도 했습니다. 접영 백미터
      간다고 하니 동기들이 엄청 부러워하더라고요.
      혼영400완주글도 써야되는데..^ ^;
      그린님 거듭 고맙습니다. ^ ^

  3. 2009.06.30 23:00  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • BlogIcon 산골 2009.07.01 10:51 신고  댓글주소  수정/삭제

      방금 답메일을 보내드렸는데..머리가 지끈지끈 아픕니다. ㅠ.ㅠ
      정성스러운 메일 감사드리고요..곧 추상화글 발행하겠습니다. ^ ^