[Java] 객체지향의 사실과 오해_1

gnoesnooj·2021년 11월 15일
0

커피주문

손님은 캐시어에게 커피를 주문하기위해 요청하고, 캐시어는 주문을 받는 역할을 통해서 손님의 요청에 대해 응답 하고, 손님과 협력한다.

캐시어는 바리스타에게 어떤 커피를 제조해야 하는지 요청하고, 바리스타는 해당 커피를 제조해서 주는 역할을 통해 캐시어의 요청에 응답하고, 서로 협력을 한다.

손님 > 캐시어 > 바리스타의 순서로 전해진 요청은 다시 역순으로 응답하며 커피가 바리스타에게서 손님으로 전달된다.

커피 주문이라는 요청을 각자가 갖고 있는 책임, 역할을 다하면서 서로 협력하며 해결해나간다.


사람들이 협력을 위해 특정한 역할을 맡고, 역할에 적합한 책임을 수행한다

  • 여러 사람이 동일한 역할을 수행할 수 있다.
  • 역할은 대체할 수 있다.
  • 책임을 수행하는 방법은 자율적으로 선택할 수 있다.
  • 한 사람이 동시에 여러 역할을 수행할 수 있다.

이것을 객체지향의 관점으로 바꿔서 말하자면,

  • 여러 객체는 동일한 역할을 수행한다.
  • 역할은 대체할 수 있다.
  • 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다.
  • 하나의 객체가 동시에 여러 역할을 수행할 수 있다.

어떤 상태와 행동을 갖고 있는 실체를 객체라고 한다.
객체는 다른 객체와 협력하기 위해 메시지를 전송한다.
각 객체는 메세지를 어떻게 처리할지에 대한 방법, 메소드를 갖고 있다.
각 객체가 메시지를 어떻게 처리할 지 메소드를 선택한다는 것은 객체지향 프로그래밍의 큰 특징이다.


객체지향을 생각하면 클래스가 아닌 객체를 먼저 떠올리자. 클래스는 객체를 위한 정적인 도구일 뿐, 서로 메시지를 주고 받는 객체의 동적인 관계에 집중하여 객체지향을 이해하자.

객체지향은 객체들 간에 서로 역할과 책임 속에 협력을 하는 것을 말한다.


나의 생각

객체지향이 뭐냐? 라는 질문을 처음 들었을 때에, 그저 "그냥 객체를 가지고 프로그래밍하는거지 뭐야.." 라는 생각밖에 들지 않았다.

그럼 객체는 뭐냐 ?

클래스로 찍어내는 애들이지 않나 ?

그럼 객체지향은 클래스 중심적인 프로그래밍이 되겠네 ?

이러한 질문 흐름에 나는 어떠한 반론도 제기할 수 없었다. 그저 기계적으로 자바만을 하고 있었을 뿐, 자바를 알고 있다고 절대 말할 수 없었던 상태였기 때문이다.

내가 하고 있는 것 조차도 제대로 모르고 있다는 사실을 알게 된 순간이였고, 좀 더 단단해지기 위해 노력해야겠다.

profile
누구나 믿을 수 있는 개발자가 되자 !

0개의 댓글