(수근수근)
3월 독서 - 객체지향의 사실과 오해 본문
객체지향의 사실과 오해 (저자. 조영호)
이 책을 읽은 이유
내가 이 책을 읽게 된 것은 1분기가 끝나는 3월이 되면서 스스로 다짐을 했다!
그건 바로바로~ 매달 책 한 권을 읽는 것이다. ㅎㅎ...
3월 달 내가 선택한 책은 '객체지향의 사실과 오해'이다.
매달 책을 읽고 평을 글로 작성하는 것은 책 읽는 것에 무조건 포함이다!
(왜냐면 그렇게 하지않으면 내가 깊게 생각 안할 것 같아서....노력에 대한 산출물!)
😳 객체지향? 당연한거아냐~?
자바로 프로그래밍을 시작했던 나는 객체라는 개념을 당연하게 받아드렸다. 클래스 객체 차이점만 이해하려고 했지 객체가 생기게 된 이유에 대해서 깊게 생각해본 적이 없었다. 맨날 붕어빵, 기계 ...객체는 상태와 함수를 가지고 있다.... 그 정도인 부끄러운 수준이었다.
🙀 역할, 책임, 협력
이 책에서 이상한 나라의 인물들을 객체에 비유하며 이야기를 시작한다. 각각의 인물들이 객체로서의 역할을 하고 그 안에서 역할, 책임, 협력에 관한 것은 얘기한다!
하나의 문제를 해결하기 위해 객체들을 서로 요청과 응답을 통해 서로 협력한다.
협력하는 과정에서 객체들은 각자의 역할에 적합한 행동을 통해 역할에 대한 책임을 다한다.
이렇게 표현을 해주니...그 이후 코드분석할 때 클래스가 살짝 다르게 보였다...예를 들어 이 클래스는 무슨 역할을 하고 다른 객체와 무슨 메시지로 협력하고 있을까...? 조금 더 객체를 다른관점에서 바라보려는 시도하게 됐다...(그래도 어렵지만)
✨ 행동이 상태를 결정한다.
지금까지... 변수먼저 선언했던 나...(지금이라도 알면 된거야~)
저자는 상태를 먼저 선언하는 것에 대해 몇가지 문제점들을 열거한다. 협력에 관점에서 객체에 대한 행동을 먼저 고려하고 그 행동에 맞는 상태는 자동적으로 결정이 된다는 것...
지금까지 뭘 알고있었....?;;
🤗 객체지향과 추상화
구체적이고 명확한 것만이 사람들한테 정보를 제대로 제공한다는 것은 ! 잘못되었다. 이 책에서 지하철 노선도를 예시로 들면서 설명한다. 우리가 보는 지하철 지도는 거리, 지형 전혀 따지지 않았다. 근데 상세히 그려진 지도보다 복잡도가 낮은 지하철 노선도를 봤을 떄 지하철내에서 이해가 더 빠르다.
복잡도를 낮추며 진짜 원하는 목적(상암(6호선) to 양재(3호선)으로 이동하는 것)을 6호선과 3호선만으로 표현했다. 따라서 추상화는 어떤 것을 명확하게 이해가기 위해 특징이나 물제를 의도적으로 감춤으로 복잡성을 극복하는 방법이다.
👉 결국은 역할, 책임, 협력
훌륭한 객체지향 설계는 조화를 이루며 적극적 상호작용을 하는 협력적인 객체를 창조하는 것이라고 책은 표현하고 있다. 어떤 협력에 참여하는지가 객체의 행동을 결정 → 필요한 행동 → 상태를 결정!
그렇다면 객체들은 어떻게 협력할까? Message를 통한 요청과 응답이다. 이 부분에서 객체말고도 다양한 것들이 생각이 났다. 우리는 다양한 프로토콜을 사용해서 서로 미디어나 데이터를 요청하고 응답한다. 이러한 것들고 역할-책임-협력 관점에서 바라보니 지극히 말이 되었다! (특히 지금 맡고있는 솔루션....에 비유하니 찰떡이었다...유레카~)
이 책을 읽고 나서...
- 객체지향에 무지한 나에게 객체지향의 맛을 보게 해준 책!
- 나 같이 이해 못하는 사람도 이해가 가능하게 해주는 쉽고 적절한 예시
- 처음부터 끝까지 주제에 대해서 일관성있는 책.
- 감사합니다 ! (이 책을 집필 해준 것도... 내가 읽게 된 것도.....)
- 1년 뒤 다시 한 번 읽어보고 싶은 책