객체지향의 사실과 오해
객체지향에는 많은 사람들이 동의하는 공통적인 특징이 있다. 추상화, 캡슐화, 상속, 다형성은 객체지향을 다른 패러다임과 구분하는 중요한 특징이다.
SOLID로 대표되는 몇 가지 원칙들을 사용하면 훌륭한 객체지향 코드를 작성할 수 있다는 사실에 반박하는 개발자들은 그다지 많지 않다. 디자인 패턴 역시 객체지향 프로그래머들이 유용하다고 생각하는 도구 중 하나다.
그래서 객체지향이란 무엇일까?
저자는 위 질문에 정답이란 존재하지 않는다고 한다. 중요한 것은 이 질문에 대한 자신만의 견해를 가지고 있느냐다.
대부분의 사람들은 객체지향이란 무엇인가에 대해 자신 있게 대답하지 못한다. 실제로 상속이 무엇인지는 대답할 수 있지만 일반화가 무엇인지에 대해서는 대답하지 못하는 개발자들이 많다.
객체지향이 객체를 지향한다는 사실을 잘 알고 있으면서도 많은 분들이 여전히 클래스나 상속을 중심으로 객체지향을 바라보고 있다.
이 책은 객체지향이란 무엇인가라는 원론적이면서도 다소 위험스러운 질문에 대한 저자의 견해를 말하기 위해 쓰였다.
객체지향으로 향하는 길
- 클래스가 아니라 객체를 바라보는 것에서부터 시작한다.
- 객체를 독립적인 존재가 아니라 기능을 구현하기 위한 협력하는 공동체의 존재로 바라본다.
- 협력에 참여하는 객체들에게 적절한 역할과 책임을 부여할 수 있어야 한다.
- 위 개념들을 사용하는 프로그래밍 언어 틀에 흐트러짐 담아낼 수 있어야 한다.
이 책의 목적은 위 4가지 항목들을 재빠르게 내디딜 수 있도록 도움을 주는 것이다. 따라서 객체지향을 더 잘 이해하기 원하는 사람들 또는 객체지향에 대한 오해와 불신을 품고 있는 사람들을 위한 책이다.
대상 독자
객체지향 프로그래밍 언어를 사용하는 소프트웨어 개발자를 대상으로 한다. 하나 이상의 객체지향 프로그래밍 언어에 능숙하다면 도움이 될 것이다.
개발 경험이 전무하다고 해서 읽을 수 없는 것은 아니지만, 코드를 작성한 경험이 많으면 많을수록, 객체지향 프로그래밍 언어에 대한 지식이 많으면 많을수록 책에 숨겨져 있는 의미를 더 깊이 있게 이해할 수 있을 것이다.
책 구성
1장. 협력하는 객체들의 공동체
객체지향 패러다임의 핵심이 자율적인 객체들의 협력이라는 사실을 강조한다.
2장. 이상한 나라의 객체
‘객체란 무엇인가’라는 본질적인 질문에 대답하려고 한다. 객체가 상태와 행동, 식별자를 가진 존재라는 사실을 이해하게 될 것이다.
3장. 타입과 추상화
소프트웨어 개발에서 가장 중요한 개념인 추상화에 대해서 다룬다. 추상화는 동적인 객체들을 단순화시켜 정적인 타입으로 갈무리하는 것이다. 타입의 개념을 이해하고 객체를 구현하기 위해 클래스를 사용하는 이유에 대해 이해하게 될 것이다.
4장. 역할, 책임, 협력
객체지향 설계의 가장 중요한 재료인 역할, 책임, 협력에 관해 설명한다. 이는 객체지향의 핵심이라는 것을 알게 될 것이다.
5장. 책임과 메시지
훌륭한 메시지가 훌륭한 객체지향 설계의 기반이라는 사실을 강조한다. 객체의 자율성과 설계의 유연성은 얼마나 훌륭한 메시지를 선택하느냐에 달려 있다.
저자는 독자들이 이 책에서 단 하나의 장만 읽겠다고 한다면 5장을 읽기를 권한다.
6장. 객체 지도
객체지향이 구조와 기능이라는 두 가지 관점들을 어떻게 조화시키는지에 관해 설명한다. 도메인 모델과 객체지향 패러다임 사이의 관계를 이해할 수 있다.
7장 함께 모으기
처음이자 마지막으로 구현 코드가 등장하는 장으로 1장부터 6장까지 다룬 내용을 동작하는 코드를 통해 정리한다.
https://link.coupang.com/a/YkphA
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'IT Book > 객체지향의 사실과 오해' 카테고리의 다른 글
[객체지향의 사실과 오해] 5. 역할, 책임, 협력 - 개발 도서 정독하기 (0) | 2023.07.19 |
---|---|
[객체지향의 사실과 오해] 3. 타입과 추상화 - 개발 도서 정독하기 (0) | 2023.06.22 |
[객체지향의 사실과 오해] 2. 이상한 나라의 객체 - 개발 도서 정독하기 (0) | 2023.05.24 |
[객체지향의 사실과 오해] 1. 협력하는 객체들의 공동체 - 개발 도서 정독하기 (1) | 2023.05.17 |