[책읽기] 객체지향의 사실과 오해 - 1장

Haiseong Jeong·2023년 10월 18일
1
post-thumbnail

지인의 책 추천을 받았다. 사실 나는 책을 잘 못읽는데 글만 보고 있으면 지루해지고 집중이 안되서다. 그런데 이 책은 두껍지도 않고 글자도 커서 읽을 수 있겠다 싶었다. 이 책을 완독하고 자신감을 얻어서 다른 좋은 책도 많이 읽었으면 하는 마음에서 정리하면서 읽기를 시작해본다. 누구 보기 좋으라고 쓰는 글은 아니라 정리가 잘 안되있을 것이다. 읽고 이건 기억해두면 좋겠다 싶은 문장이나 나만의 생각위주로 적을것이다.

1장 - 협력하는 객체들의 공동체

객체지향은 실세계의 모방을 위한것이 아니다.

  • 실세계의 사물과 애플리케이션을 위한 객체의 유사성을 찾는 것은 어렵다.

카페테리아 예시 (손님, 캐시어, 바리스타 간의 역할, 책임, 협력)

  • 협력 : 커피 주문
  • 요청 : 누군가에게 서비스를 요구 (커피 주세요.)
  • 응답 : 요청에 대해 서비스를 제공 (커피 여기요.)
  • 역할 : 손님, 캐시어, 바리스타 (협력의 과정에서 부여받는다.)
  • 책임 : 바리스타가 커피를 만들 책임, 손님이 주문을 할 책임 (특정한 역할은 특정한 책임을 암시한다.)

역할, 책임, 협력

  • 협력의 핵심은 특정 책임을 수행하는 역할들 간의 연쇄적인 요청과 응답을 통해 목표를 달성하는 것
  • 목표는 더 작은 책임으로 분할되고 책임을 수행할 수 있는 역할을 가진사람에 의해 수행된다.
  • 책임을 수행하기 위해 다른 사람에게 도움을 요청하고 응답받는다.

객체의 특징

  • 여러 객체가 동일한 역할을 수행할 수 있다. (어떤 바라스타가 커피를 만들든 신경쓰지 않는다.)
  • 역할은 대체 가능성을 의미한다.
  • 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다. (라떼아트를 하트로 할수도 별로 할수도 있다.)
  • 하나의 객체가 동시에 여러 역할을 수행할 수 있다. (캐시어와 바리스타를 모두 할수도 있다. -> 내가 보기에는 별로 좋지 않는 경우인것 같음)

객체의 덕목

  • 객체는 애플리케이션에 실제로 참여하는 주체다.
  • 객체는 애플리케이션의 기능을 구현하기 위해 존재한다.
  • 첫번째 덕목 : 객체는 충분히 협력적이어야한다.
    • 외부의 도움이 필요없는 전지전능한 객체는 내부의 복잡도에 의해 자멸한다.
    • 그러나 수동적이면 안된다. 다른 객체의 명령에 복종하는게 아닌 응답을 해야한다.
    • 협력을 위해 메시지로 의사소통 해야한다.
      • 메시지 전송 : 요청 하는 것
      • 메시지 수신 : 요청을 받는 것
  • 두번째 덕목 : 객체는 자율적이여야한다.
    • 자신의 행동을 결정하고 책임을 져야한다.
    • 상태와 행동을 함께 지닌 자율적인 계체가 되어야한다.
    • 객체의 내부와 외부를 명확하게 구분하는것에서 자율성이 나온다. (다른 객체가 무엇을 하는지는 알 수 있지만 어떻게 수행하는지에 대해서는 알수 없어야 한다.)
    • 메서드 : 수신한 메시지를 처리하는 방법

객체지향의 본질

  • 시스템 : 상호작용하는 자율적인 객체들의 공동체
  • 객체지향 : 객체를 이용해 시스템을 분할
  • 자율적인 객체란 상태와 행위를 함께 지니며 자기 자신을 책임진다.
  • 객체는 시스템의 행위를 구현하기위해 다른객체와 협력한다.
  • 협력내에서 역할을 수행하고 역할은 관련된 책임의 집합이다.
  • 객체는 협력을 위해 메시지를 이용하고 메시지를 처리하기 위해 메서드를 자율적으로 선택한다.

내가 이해한 내용을 정리하면...
객체지향 어플리케이션을 동작시키기 위해서는 객체들의 협력이 필요하다. 객체들은 역할을 부여받으며 역할에 따른 책임을 져야한다. 상호작용을 위해 메시지를 주고 받는데 메시지를 요청받는 객체는 자율적으로 메시지를 처리하기위한 메서드로 메시지를 처리해 응답해줘야한다.

profile
나는 개발자다. 5000만큼 코딩한다.

0개의 댓글