Skip to content

객체지향의 사실과 오해 기록( 서재연 )

csbsjy edited this page Oct 13, 2019 · 1 revision

객체지향의 사실과 오해


~p.70 기록(2019.10.09)

"소프트웨어의 세계와 실세계 사이의 거리는 멀다. 오히려 소프트웨어 세계의 객체가 실세계의 사물보다 더 많은 능력을 가지고 있다. 굳이 둘 사이의 관계를 얘기하자면 일치보다는 은유에 가깝다"

객체지향의 주요 개념

역할(Role)과 책임(responsibility)

  • 여러 객체가 동일한 역할을 수행할 수 있다.
  • 역할은 대체 가능하다.
  • 책임은 다양한 방법으로 수행될 수 있다.(다형성의 개념이 여기에서 나올 수 있음)
    • 커피를 만든다는 책임은 커피를 만드는 것이지 "어떻게"만드는 가는 상관 없다.
  • 역할은 관련성 높은 책임들의 집합이다.

협력

  • 각 객체들은 고립된 것이 아닌 서로 간의 협력을 통해 시스템을 구성한다.
  • 연쇄적인 요청과 응답을 통해 협력을 이루어낸다.

"애플리케이션은 다양한 기능을 제공하고 이 기능은 여러 역할을 통한 객체들의 책임을 통해 수행되며 그 객체들은 다른 객체들과 연쇄적인 요청과 응답의 흐름을 통해 협력한다."

객체

  • 객체는 충분히 협력적이어야 한다.
  • 요청에 대한 응답을 하는 것은 사실이지만 그것이 수동적이라는 의미는 아니다. 응답하는 방식은 객체 자신이 자율적으로 결정한다.
  • 즉, 객체는 충분히 자율적이어야 한다.
  • 객체는 다른 객체가 무엇을 수행하는지는 알 수 있지만 어떻게 수행하는지는 알 수 없다.(캡슐화)

상태

  • 객체가 과거에 행동한 이력을 설명하지 않고도 지금 하는 행동의 결과를 알 수 있도록 한다.
  • 지금 물을 마신 후 남아있는 물의 양을 알기 위해서는 그동안 물을 마신 행동을 전부 알 필요가 없고 현재 남아 있는 물의 양만 알면 된다.
  • 값이 될수도 있고 다른 객체가 될 수도 있다.

행동

  • 행동은 상태에 영향 받고 상태에 영향을 준다.
  • 외부에 가시적이다.

"객체 설계는 행동에 초점을 맞추어야 한다."