이 책을 알게 된 계기는 우테코 프리코스를 마친 후 받은 불합격 메일에 첨부된 학습 로드맵이었다. 추천된 책이니 읽어봐야겠다는 생각이 들었다. 프론트엔드 개발자로서 백엔드 개발자와 협업할 일이 많을 텐데, 그들과 원활하게 소통하려면 객체지향 개념을 이해할 필요가 있다고 느꼈다.
백엔드 시스템은 대부분 객체지향적인 구조로 설계되며, API 설계, 도메인 모델, 데이터 흐름 등을 이해하려면 객체지향 개념이 필수적이다. 그래서 객체지향 개념을 알고 있으면 더 효과적으로 대화할 수 있지 않을까? 하는 기대감에 읽게 되었다.
아래 내용은 책을 읽으면서 중요하다고 생각한 문장을 기록한 후, 생성형 AI의 도움을 받아 정리한 것이다.
객체지향의 가장 중요한 본질은 자율적인 객체들의 협력
이다.
책임
을 가진다고 말한다.은유
하여 유용한 객체들을 창조한다.역할, 책임, 협력의 관점에서 애플리케이션을 설계하는 유용한 세 가지 기법
협조적이고 성실한 객체 시민들로 구성된 객체지향 시스템을 설계하는 절차:
패턴은 모범이 되는 설계다. 패턴은 특정한 설계를 돕기 위해 모방하고 수정할 수 있는 과거의 설계 경험이다.
일반적으로 디자인 패턴은 반복적으로 발생하는 문제와 그 문제에 대한 해법의 쌍으로 정의된다. 패턴은 해결하려고 하는 문제가 무엇인지를 명확하게 서술하고, 패턴을 적용할 수 있는 상황과 적용할 수 없는 상황을 함께 설명한다. 패턴은 반복해서 일어나는 특정한 상황에서 어떤 설계가 왜 더 효과적인지에 대한 이유를 설명한다.
디자인 패턴은 공통으로 사용할 수 있는 역할, 책임, 협력의 템플릿이다.
테스트 주도 개발은 애자일 방법론의 한 종류인 XP(eXtreme Programming)의 기본 프랙티스로 소개되면서 주목받기 시작한 설계 기법이다.
테스트 주도 개발의 기본 흐름은 실패하는 테스트를 작성하고, 테스트를 통과하는 가장 간단한 코드를 작성한 후, 리팩터링을 통해 중복을 제거하는 것이다.
테스트 주도 개발의 목적은 구체적인 코드를 작성해나가면서 역할, 책임, 협력을 식별하고 식별된 역할, 책임, 협력이 적합한지를 피드백 받는 것이다.
이 책은 '이상한 나라의 앨리스'라는 소설을 예시로 객체지향을 설명해주기 때문에 처음에는 비교적 쉽게 읽을 수 있었다. 하지만 객체지향에 대해 알게 된 새로운 정보가 많아 몇 번을 읽어야 이해가 되는 부분도 있었다. 그럼에도 불구하고 책을 다 읽고 나니 객체지향에 조금 더 친숙해졌고, 이해가 되기 시작했다.
책을 읽고 나서 가장 기억에 남는 개념은 '객체지향의 세계는 자율적인 객체들의 협력, 자율적인 객체들의 공동체'이다. 책에서 반복적으로 언급해주어서 이 개념이 머릿속에 깊이 남아 있다. 또한, 설계를 할 때 중요한 요소로 언급되는 "역할", "책임", "협력"이 얼마나 핵심적인 부분인지 알게 되었다.
책을 통해 다룬 객체지향에 대한 오해들은 모두 제가 잘못 이해했던 부분들이었고, 특히 객체지향은 단순히 현실 세계를 모방하는 것이 아니라 현실을 은유하여 유용한 객체들을 창조하는 방식이라는 점은 정말 큰 충격이었다. 그동안 단단히 오해하고 있었다. 지금이라도 이 책을 읽은 것이 정말 다행이라는 생각이 들었다.