[객체지향의 사실과 오해] 1장

Choco Ham·2023년 1월 14일
0

웹개발 필수도서

목록 보기
1/2

🚗 현대인을 위한 3줄요약.

객체지향 프로그래밍의 핵심은 줄곧 의식해왔던 클래스가 아닌 객체이며 객체의 역할, 책임, 협력을 통해 설명할 수 있다.


📚 들어가기에 앞서...

우아한 형제들에서 진행하는 교육 프로그램 우테코에서 광탈하고... 공부가 더 필요하겠다고 느낀 찰나 친절히도 우테코 측에서 내게 학습 로드맵이라며 추천 도서 리스트를 메일로 보내왔다. 솔직히 다 읽어볼 자신은 없고 나에게 가장 필요하다고 느끼는 책을 딱 5권만 골라서 읽어보고 리뷰해보고자 한다. 그래서 결론은

  • 챕터별로 내용을 정리, 리뷰한다.
  • 리뷰 과정을 기록으로 남긴다.

정도 되겠다. 독후감 보다는 메모장으로 생각해줬으면 한다.


📌 객체의 역할과 책임, 협력

카페에서 음료를 주문한다는 상황을 가정해보자. 손님, 바리스타 등의 사람을 객체로, 음료의 주문을 메세지로, 요청을 처리하는 것(주문전달, 음료제조 등)을 메소드로 해석했을 때 이를 객체지향이라 할 수 있겠다.

주제가 객체지향인 만큼 객체를 중심으로 생각했을 때 객체와 객체는 저마다의 역할을 수행하기 위해 존재하며 메세지를 통해 requestresponse를 주고받는다. 역할을 부여받은 객체들은 각각 기능을 수행할 책임이 있고 이 과정에서 협력이 발생하게 된다.

👉 협력

현대사회에서 혼자서 모든 일을 수행하는것은 불가능에 가깝다. 문제를 해결하고자 한다면 해당 문제 해결에 도움이 되는 객체에게 요청(request)를 하게 되며 요청받은 객체는 역할을 수행한 후 요청 주체에게 응답(response)하게 된다.

👉 역할과 책임

역할을 기준으로 객체를 분리한다면 아마 다음과 같을것이다.

  • 손님 : 음료를 요청하고 주문한 음료를 수령하는 역할
  • 카운터 : 손님의 요청을 바리스타에게 전달하고 바리스타의 응답을 손님에게 전달하는 역할
  • 바리스타 : 카운터의 요청에 의해 음료를 제조하고 카운터에게 응답하는 역할

주어진 역할을 수행하는 것을 본인의 책임으로 볼 수 있기에 명확한 역할을 구분하는 것이 중요하며 이를 위해선 다음과 같은 역할/책임의 특성을 고려할 필요가 있다.

  • 하나의 객체2개 이상의 역할을 수행할 수 있다.
    - 규모가 작은 동네 카페의 경우 카운터가 바리스타의 역할을 동시에 수행해도 문제없다.

  • 반대로 여러 객체하나의 역할을 수행할 수 있다.
    - 능률 향상을 위해 2명 이상의 바리스타를 고용해도 된다.

  • 역할은 대체 가능성을 내포하고 있다.
    - 손님 입장에선 바리스타가 누구인지는 전혀 상관없다. 문제가 발생할 경우 해당 바리스타를 해고하고 새로운 바리스타를 고용하면 그만이다.

  • 객체는 스스로 책임을 수행할 방법을 정할 수 있다.
    - 모든 카페의 바리스타는 손님에게 음료를 제공한다는 동일한 책임을 부여받지만 각 프렌차이즈 별로 다른 원두, 장비, 로스팅 방법 등을 사용한다. 이를 다형성(polymorphism) 라고한다.


📌 객체를 지향한다는 의미

당장 떠오르는 클래스, 메소드 따위에 매몰되지 말고 객체의 역할, 책임, 협력에 집중해야 한다. 결국 객체지향이란 상호작용하는 자율적인 객체들의 공동체를 통해 시스템을 분할하는 방법이다.


참고문서

profile
야호

0개의 댓글