티스토리 뷰

2. 이상한 나라의 객체

행동이 상태를 결정한다.

객체지향에 갓 입문한 사람들이 가장 쉽게 빠지는 함정은 상태를 중심으로 객체를 바라보는 것이다.

  • 상태를 먼저 결정할 경우 캡슐화가 저해된다.
    • 상태에 초점을 맞출 경우 상태가 객체 내부로 깔끔하게 캡슐화되지 못하고 공용 인터페이스에 그대로 노출되버릴 확률이 높아진다.
  • 객체를 협력자가 아닌 고립된 섬으로 만든다.
    • 객체가 필요한 이유는 어플리케이션의 문맥 내에서 다른 객체와 협력하기 위해서이다.
    • 상태를 먼저 고려하면, 협력이라는 문맥에서 멀리 벗어난 객체를 설계하게 함으로써 자연스럽게 협력에 적합하지 못한 객체를 창조하게 된다.
  • 객체의 재사용성이 저해된다.
    • 재사용성은 다양한 협력에 참여할 수 있는 능력에서 나온다.
    • 상태에 초점을 맞춘 객체는 다양한 협력에 참여하기 어렵기 때문에 재사용성이 저하될 수밖에 없다.

은유와 객체

협력에 참여하는 훌륭한 객체 시민을 양성하기 위한 가장 중요한 덕목은 상태가 아니라 행동에 초점을 맞추는 것이다. 이는 응집도가 높고 재사용 가능한 객체를 만들 수 있게 한다.

  • 객체지향을 현실 세계의 모방이라고 보는 관점은 객체지향 분석/설계란 현실 세계에 존재하는 다양한 객체를 모방한 후 필요한 부분만 취해 소프트웨어 객체로 구현하는 과정이다.
  • 객체지향을 현실 세계의 추상화라고하는데, 그 안에는 현실 세계를 모방해서 단순화한다는 의미가 숨어있다.
  • 추상화란 실제의 사물에서 자신이 원하는 특성만 취하고 필요 없는 부분을 추려 핵심만 표현하는 행위를 말한다.
  • 그러나, 객체지향 세계는 현실 세계의 단순한 모방이 아니다. 소프트웨어안에 구현된 상품 객체는 실제 세계의 상품과는 전혀 다른 양상을 띤다.
  • 소프트웨어 상품이 실제 세계의 상품을 단순화하거나 추상화한 것이 아니라 특성이 전혀 다른 어떤 것이다. 소프트웨어 상품은 실제 세계의 상품이 하지 못하는 가격 계산과 같은 행동을 스스로 수행할 수 있다.

의인화

현실 속의 객체와 소프트웨어 객체 사이의 가장 큰 차이점은 무엇일까? 그것은 현실 속에서 수동적인 존재가 소프트웨어 객체로 구현될 때는 능동적으로 변한다는 것이다.

  • 소프트웨어 객체가 현실 객체의 부분적인 특징을 모방하는 것이 아니라 현실 객체가 가지지 못한 추가적인 능력을 보유하게 된다.

  • 현실 세계에는 존재조차 하지 않는 것들도 소프트웨어 안에서는 생생한 생명을 가진 존재로 재탄생한다.

  • 눈에 보이지 않는 공기나 바람도 소프트웨어 안에서는 시각적인 형태를 가지도록 만들 수 있다.

    객체지향 세계의 거리는 현실 속의 객체보다 더 많은 특징과 능력을 보유한 객체들로 넘쳐난다.

은유

  • 은유는 하나의 의미를 다른 것을 이용해 전달한다는 의미를 갖고 있다.
  • 본질은 한 종류의 사물을 다른 종류의 사물 관점에서 이해하고 경험 하는데 있다.
  • EX) "그 여자 양 같아요", "그 남자 사자 같아요"
  • 은유의 관계는 객체지향 모델링에서 발견되는 현실 객체와 소프트웨어 객체의 관계와 일치한다.
  • 결국 소프트웨어와 현실은 차이가 존재한다.
  • 소프트웨어에 대해 사람들이 생각하는 모습과 실제 소프트에어의 표현 사이의 차이가 존재한다.
  • 이런 차이를 극복하기 위해서, 실제 객체의 이름을 소프트웨어 객체의 이름을 사용하면 표현적 차이를 줄일 수 있다.

전통적인 조언은 현실 세계의 객체를 자세히 관찰하고 그중에서 소프트웨어 객체에 적합한 속성만 추려내는 것이다. 그러나 소프트웨어를 개발하는데 도움을 주지 못한다. 오히려 객체지향 애플리케이션이 현실의 구조를 정확하게 반영해야 한다는 오해만 심어줄 뿐이다.

우리의 목적은 현실을 모방하는 것이 아니다. 단지 새로운 소프트웨어 세계를 창조하기만 하면된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함