반응형

https://book.naver.com/bookdb/book_detail.naver?bid=15007773 

 

오브젝트

역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를

book.naver.com

 

- 오브젝트 : 코드로 이해하는 객체지향 설계 / 조영호

 

'객체지향의 사실과 오해'가 서론이었다면, 이 책은 본론이라고 할 수 있겠습니다.

객체지향에 대한 원론적인 접근 뿐만 아니라 코드를 통해서 다양한 사례를 접하고 해결책을 제시해줍니다.

그런 만큼 내용도 어려웠지만 많은 것을 배울 수 있었습니다.

 

응집도, 결합도, 캡슐화, 상속 등 이런 객체지향 특성들에 대해 용어와 간단한 사전적 정의만 알았지,

이것이 실제로는 무엇이고 왜 적용되어야하는지, 어떤 게 적용되었다는 것인지 참 애매했습니다.

하지만 이 책에서는 그러한 것들에 대해서 코드와 함께 명확하게 정의내려주고,

코드를 통해서 그것들이 왜 중요한지, 어떤 식으로 안좋은 설계가 좋은 설계로 변화되는지 보여줍니다.

역할, 책임, 협력이라는 관점에서 설계의 중요성을 다시금 느낄 수 있었고,

이름만 들어본 객체지향 SOLID원칙에 대해서도 코드와 함께 자세하게 배워볼 수 있었습니다.

메시지와 인터페이스를 통해서 협력하는 객체들 간의 관계를 통해서, 인터페이스와 구현이 분리된다는 것이 무엇이고 다형성이 어떻게 활용되는지 알게 되었고, 객체들은 독립적인 섬이 아니라는 키워드가 마음에 와닿았습니다.

 

처음 자바를 배우고 코드를 작성할 때는, 어떤 상황이 생길 때마다 코드 재활용 목적으로 상속 구조의 클래스를 추가하고, 무분별하게 getter와 setter를 남용하여 객체에 적절한 책임을 부여하는 방법도 몰랐습니다.

하지만 이렇게 코드를 작성할수록 조합마다 너무 많은 수의 클래스가 생기면서 중복된 코드도 많이 생기고, 설계에 의아함이 생김에도 불구하고 제대로 된 해결책을 찾지 못하여 마음에 담아두곤 했습니다.

하지만 이 책에서는 이러한 고민거리와 문제점들을 객체지향 원칙을 따르며 명쾌한 해결책을 제시해줍니다.

막연하기만 했던 객체들 간의 관계를 설계하는 방법에 대해서 어느정도 알게되었고, 고민했던 내용들에 대해 다루다보니 더욱 재밌게 배울 수 있었습니다.

 

Ruby나 C#, C++, Javascript, Scalar 등 다양한 언어로 작성된 객체지향 코드도 보여주면서, 다른 언어의 특성을 알아보는 것도 큰 재미였습니다.

이 책을 읽으면서 객체지향 프로그래밍이 무엇인지 깊이 있게 생각해보았고, 이 때 작성했던 코드들을 되돌아보면서 부족했던 과거를 다시금 깨닫게 되었습니다.

 

한 가지 아쉬울 수도 있는 점은, 어떤 개념에 대해 너무 장황하거나 반복해서 설명하는 경향이 있습니다.

하지만 이것은 절대 단점이 아닙니다.

이해된 것으로 착각하고 넘어간 개념이라도 다시 짚어주기 때문에, 개념을 제대로 이해하는데 큰 도움을 줍니다.

반응형

+ Recent posts