CS 지식/지식확장

[객체지향의 사실과 오해] 01. 협력하는 객체들의 공동체

JYUN(sia) 2025. 3. 22. 10:11

동아리에서 서버파트 튜터를 맡게 됐다.

1,2주차가 객체지향에 관련된 과제인데 그에 대한 코드리뷰를 해줘야 한다.

근데 나부터 객체지향이 뭔지도 잘 모르고 그저 개발을 해온 것 같아서

조영호님의 '객체지향의 사실과 오해'를 구매하게 됐다.

 

 

https://m.yes24.com/goods/detail/18249021

 

객체지향의 사실과 오해 - 예스24

『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장

m.yes24.com

 

워낙 유명한 책이라 옛날부터 읽어보고 싶었는데, 미루고 미루다 드디어! 구매하게 됐다.

오랜만에 얇은 책을 봐서 더 기쁜 마음으로 정말 재밌게 읽고 있다.

 

내용을 잊지 않기 위해서 챕터별로 정리해보려 한다.

 

객체지향 == 클래스?


프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호 작용으로 서술하는 방식이다.

객체지향 프로그래밍-나무위키 에서 첫 문장을 가져왔다.

내가 지금까지 배운 객체지향에 대해 생각해보면 붕어빵-붕어빵틀 밖에 생각나지 않는다.

아이패드를 뒤져서 실제로 JAVA프로그래밍 전공 시간에 썼던 ppt자료를 가져왔다.

많이들 공감하지 않을까? 근데 지금 보니까 ppt그림 진짜 허접하다

이 연관성조차 그저 객체지향==클래스 라고 생각했던 것이다.

 

책에서 객체지향을 설명하기 위해 뜬금없이 커피 공화국의 아침 이야기가 시작된다.

어쨌든 나는 이 책을 기술서적, 전공서적 정도로 생각하고 구매했는데 이런 재미있는 스토리성 글이 초반부터 있으니 자연스럽게 흥미가 갔다. 작가님은 이걸 의도하신 걸까

  • 객체지향은 '협력하는 공동체'
  • 공동체가 원활한 협력을 하려면 무엇이 필요할까?
    • 각 사람에겐 역할과 책임이 존재한다 : 손님, 캐셔, 바리스타 등
    • 여러 사람이 동일한 역할을 수행할 수 있다 : 카페에 알바생이 한 명일 수는 없으니까
      → 다시 말해서 역할은 대체 가능성을 의미한다.
    • 역할의 수행 방법은 자율적이다 : 결과만 같으면 되는 것 아닌가? 컵에 얼음을 먼저 넣든, 샷을 먼저 넣든 손님이 응답받는 것은 결국 아이스아메리카노 이다. 손님은 어떻게 만들어졌는지 모르기 마련이다!
    • 한 사람이 동시에 여러 역할을 수행할 수 있다 : 바리스타도 다른 카페에 가면 손님이다.

 

적절한 타율성과 적절한 자율성


객체지향을 설명하기에 (협력하는 공동체를 위해) 좋은 말이라고 생각한다.

다른 객체에게 요청을 받으면 적절하게 응답해야 하지만 그 방법은 존중해주어야 한다. 

이러한 자율적인 존재가 되기 위해서 객체는 그에 필요한 행동(behavior)과 상태(state)를 함께 지니고 있어야 한다.

객체의 자율성은 객체의 내부와 외부를 명확하게 구분하는 것으로부터 나온다.

 

객체는 '메시지'를 통해 소통한다.

어떤 겍체에게 메시지를 전송하면 그에 대응하는 메서드가 실행된다.

외부의 요청이 무엇인지를 표현하는 메시지와 요청을 처리하기 위한 구체적인 방법인 메서드분리하는 것은 객체의 자율성을 높이는 핵심 매커니즘이다.

 

이것은 캡슐화 개념과도 깊이 관련돼 있다. 

 

 

 

 

 

1장이 너무 재밌어서 다음 내용들이 정말 기대된다.

객체지향의 핵심은 클래스가 아니다! 내가 먼저 버려야할 생각인 것 같다.

책을 읽어가며 객체지향에 대한 나만의 사고가 정립되길 바란다.