|
개발과 관련된 학습정보는 웹을 통해서 풍성하게 얻을 수 있다. 디자인 패턴 또한 위키피디아부터 시작해서 블로그에 잘 정리된 양질의 컨텐츠들이 참 많다. 더욱이 디자인 패턴은 케이스별로 다룰 수 있어 웹에서 관심 있는 패턴들을 검색해서 학습하기도 용이하다. 그런데 문제는 웹 상의 컨텐츠에는 대부분 “왜”가 빠져 있다는 점이다 . 컨텐츠의 작성자들은 대부분 “왜”를 가정하고 내용을 설명하고 있기 때문이다.
최근에 출판된 한빛미디어의 “Java 객체 지향 디자인 패턴“은 “왜 이 패턴이 필요한가?”에 질문에 답과 함께 패턴의 내용을 설명한 책이다. 패턴이란 것이 원래부터 있던 정형화된 이론이라기 보다는 시간이 지나면서 쌓여진 노하우이기 때문에 책만 읽는다고 해서 쉽게 내 것이 되지는 않는다. 다행히도 두 저자는 오랜 강의 경력을 바탕으로 이러한 문제를 충분히 절감하고 최대한 상세하게 패턴의 필요성을 피력하고 있음을 이 책에서 볼 수 있다.
책의 내용은 총14장으로 이루어져 있고, 이 중 1-4장은 디자인 패턴과 관련된 기본적인 내용 설명을 다루고 5장부터 14장까지 다음의총 10개의 디자인 패턴에 대해서 설명한다.
각 디자인 패턴에 대한 설명은 그림과 같이 패턴이 적용되지 않은 일반적인 코드를 통한 문제 사례와 함께 문제를 인식하는 단계, 패턴을 도입하여 해결책을 제시하고, 패턴에 대한 설명과 함께 효과를 입증하는 순서로 반복 진행된다. 더불어 책의 부제에서 알 수 있듯이 이 책은 10가지 패턴을 “UML”의 클래스 다이어그램과 컬래보래이션 다이어그램을 가지고 설명하면서 자연스럽게 UML을 눈으로 익히고 보는데 큰 도움을 준다.
큰 장점이 될 수 있는 점은 부분은 모든 예제 문제와 연습문제에 해답을 제공하고 있다는 점이다. 문제는 제공하지만 해답을 제공하지 않거나 일부만 제공하는 책들과 비교했을때 저자의 세심한 배려가 눈에 띄는 부분이다. 다만, 역으로 생각하면 해답으로 제공되는 내용이 전체 책의 약 1/5이 된다는 점을 고려할 때 해답은 따로 PDF 형식으로 제공하고 책을 좀 더 가볍게 만들었으면 어떨까하는 아쉬움이 드는 부분이기도 하다. 한 가지 더 아쉬운 점은 들자면 이 책은 예제 소스를 제공하지 않는다.요즘 프로그래밍 서적 대부분이 예제 코드를 Github이든 zip 형태이든 어떤 방법으로든 제공하고 있다는 점을 고려할 때 조금 아쉽다는 생각이다. 요약하면, 이 책은 각 디자인 패턴의 필요성, 내용, 실제 적용과정 및 결과를 일관된 순서로 설명한다. 모든 챕터에 연습문제와 해답을 제공함으로 책 한권으로 혼자서 학습하기에 부족함이 없는 책이다. 본 리뷰는 한빛 리더스 8기 활동의 일환으로 작성한 것입니다. |
|
난 이책을 산 이유가 도입부에 문제제기를 하고 이 문제를 해결해나가는 형식으로 되어 있다고 해서 샀다. 문제제기가 참신하다고 생각해 샀는데 책을 보니까 사실 문제제기는 필요없다고 느꼈다. 그냥 코드 위주로 빠르게 보았다. 지금은 복습은 몇번 한상태이다.
이 책은 개발을 해본 사람이라면 읽어도 바로바로 이해가 되는 편인데 초보자는 책을 서점가서 한번 읽어보고 사길 바란다. |
|
시중에 많은 디자인 패턴 책들이있습니다. 일단 디자인패턴을 공부가 필요한가에 대해서는 말이 많지만 배워두면 나쁘지는 않습니다. 프로그램을 보는 견문이 넓어지는 것은 사실이니깐요.
일단 시중에 다른 디자인 패턴 책과 차이점은 저자가 문제를 통해 독자가 깨우치게 한다는 점 입니다. 수학 문제집 같은 구성이라고 느껴지는 구성입니다. UML을 제시하고 간략히 코딩하면서 배워가는 구성이며 따라서 이와같은 방법이 좋다고 느껴지는 분에게는 강추 하고 싶네요 :) |
|
<<자바 객체지향 디자인 패턴>> 문제 사례 설명을 통해서 실생활에서 일어날 사례를 통해 객체지향적으로 보고, 문제점 인식을 통해서 해당 사례의 문제점이 무엇인지 확인하고 개선하는 것, 해결책 도입을 통해서 인식한 문제 해결방법이 나온다, 해당 패턴 설명은 지금까지 배운 사례를 정리하면서 해당 디자인 패턴의 이론을 정립하면서 패턴을 이해하는 것이다. 연습 문제 해결은 지금까지의 공부해온 방법에서 다른 사례들과 비교해보면서 디자인 패턴 방식으로 해결하면서 응용력을 기르는 학습방법을 소개해주고 있다. 객체지향 디자인 패턴을 배우기 전에 먼저 객체지향이란 무엇인가 알아봐야 한다. 프로그래밍을 하고 싶다면 먼저는 언어를 공부해야 하고 그 다음은 네트워크 프로그래밍을 하고 같이하면 좋은 것으로 디자인 패턴을 공부하면 좋다는 말을 강의를 들으면서 들은 적이 있었다. 우리가 평소에 살아가면서 국어시간에도 배우던 육하원칙이나 기승전결로 말을 해야 한다고 말한다. 육하원칙은 누가, 언제, 어디서, 무엇을, 어떻게, 왜라는 물음을 통해서 말의 전달이 잘되도록 하기 위해서이며 기승전결의 기는 이야기의 배경 나오는 인물 일어날 사건에 대한 조짐을 말하며 승은 이야기의 전재, 분위기의 고조가 슬슬 다가올 때를 승이라 합니다. 전은 대개 지은이나 이야기 속 하고 싶은 말이 담겨 있는 주제를 말하는 부분입니다. 분위기는 최고조에 달하며 축구경기를 보자면 하이라이트를 전이라 할 수 있습니다. 결은 결론을 내리기 전 최고조의 상황에서 살살 하강하면서 다시 한번 하고 싶은 말하고 마무리하는 부분입니다. 국어에도 말을 하기 위한 틀이 있듯이 프로그래밍에도 프레임워크라는 틀이 하나 있습니다. 많은 것들이 틀이 있고 그 틀 안에서 진행이 되기 때문에 틀이 하나 정해지면 일을 하는데 수월하게 할 수 있습니다. 잘 살펴보면 주변에 틀로 사용되는 것들이 많이 있습니다. 붕어빵도 만들기 위해서 붕어빵 틀이 있고 회사가 일을 하기 위해서 준비해오면서 하나의 양식들을 만들어가게 되는 것을 볼 수 있습니다. 기존의 일을 하던 양식이 있다면 그 양식을 토대로 작성도 해보고 필요한 부분은 추가하고 필요 없는 부분은 삭제하면서 새로운 양식을 만들어가게 됩니다. 양식을 재사용하면서 더 좋은 양식을 만들어나가는 저희의 삶들을 천천히 살펴본다면 가까이에도 이러한 하나의 구조적인 부분 틀이 존재합니다. 프로그래밍이라 해서 어려울 것이다. 지금 배우는 것으로 무엇을 할 수 있을까? 고민만 한다면 발전이 없게 된다. 하지만 가장 중요한 것이 우리가 삶에서 기본적으로 익히고 배우는 기초적인 것들이 있을 때 기초를 토대로 이해가 되고 좋은 작품이 나올 수 있다. 프로그래머로 성장하고 싶다면 좋은 프로그래머가 짠 프로그램을 많이 보아야 한다고 말한다. 맞는 말인 것이 혼자 공부하면서 어렵게 습득하였을 때는 과정과 노력을 통해서 더 마음 속에 남아있게 되고 확실히 내 것이 된다. 하지만 혼자 하면서도 습득하지 못 할 수도 있기에 멘토나 좋은 프로그래머를 만나게 되면 그 노하우를 빠르게 전수도 받을 수 있고 성장도 빠르게 할 수 있다. 객체지향의 기본적인 부분부터 다양한 패턴에 대한 설명도 자바 객체지향 디자인 패턴에 대한 노하우가 담겨있기에 자바 초급, 중급 개발자나 프로그래머로 살아갈 것이라면 읽으면 좋은 책인 것 같다.
|
|
- UML과 GoF 디자인 패턴 핵심 10가지로 배우는
디자인 패턴은 프로그래밍 언어를 배우다 보면, 꼭 한 번은 보거나 듣게되는 것인듯 합니다. 프로그래밍에 열의를 가지고, 어떤 언어를 공부하고, 그 언어의 문법을 배우고 이해하며, 기본적인 쓰임새를 공부하다보면, 그 언어를 통해 알고리즘에 대한 공부를 하게 되며, 그 과정에서 혹은 기본적인 알고리즘을 실습하고 나면, 꼭 따라 붙는 과정이 바로 '디자인 패턴'에 대한 이야기입니다.
않나 싶은데요. 디자인 패턴에 대한 책은 이미 여러권이 나와있고, 많은 사람들이 챙겨보는 이슈이지만, 초보자의 입장에서 제대로 학습하고, 이해하기 어려운 대표적인 주제의 하나인 것도 사실인듯 합니다.
디자인 패턴을 이해할 수 있게 도와준다는 생각이 들었습니다.
1부 - 클래스와 객체 지향에 대한 기본적인 사항이 나와있는 부분 ( 1장, 2장, 3장 ) 2부 - 디자인 패턴에 대한 간단한 개요가 나와 있는 부분 ( 4장 ) 3부 - 각각의 디자인 패턴에 대한 내용이 나와있는 부분 ( 5장 - 14장 )
기본적인 경험이 있는 경우라면 어렵지 않게 읽을 수 있는 기본적인 내용들이 들어 있습니다. 3부의 경우 본격적으로 디자인 패턴에 대한 설명이 나와있습니다. 3부의 각 장은 다음과 같은 5단계의 동일한 구성으로되어 있습니다. 1) 사례 설명 2) 문제점 인식 3) 해결책 제시 4) 해당 패턴 설명 5) 연습 문제
유명한 패턴을 나열하는 식이 아니라, 어떤 문제가 주어졌을 때, 어떻게 해결할 것인가에 대한 접근 방식을 제공하고 있어서, 프로그래밍의 기본이랄 수 있는 문제해결 방법을 직접 체험해 볼 수 있었고, 해당 패턴에 대해서 좀 더 구체적인 이미지를 가질 수 있도록 도와주는 부분이 아니었나 생각합니다. 그리고, 한 가지더 좋은 점은, 모든 문제에 대한 해답을 제공하고 있다는 것입니다. 전문서적을 읽기 어려운 점 중의 하나가, 연습문제에 대한 해답을 찾기 어렵다는 점입니다. 직접 문제를 풀어보더라도 맞는지 틀리는지 모르는 상황에서는 그다지 문제 풀이에 대한 의욕을 갖기 어려운 경우도 많기 때문입니다. 하지만, 이 책에서는 문제에 대한 해답을 제공하고 있어서, 일단 문제를 풀어보고, 그에 대한 해답을 통해 스스로 이해한 정도를 확인해 볼 수 있어 좋았던 것 같습니다.
해결될 만한 내용은 아닐 것입니다. 또한 이 책 말고도 다양한 언어별로 다양한 디자인 패턴에 대한 참고 자료들이 있습니다. 이 책 한 권을 통해 디자인 패턴의 모든 것을 정복할 수는 없을 것입니다. 단지 디자인 패턴에 대한 감각을 키우고 실제로 프로그래밍 능력을 키우고 싶은 분들이라면, 이 책을 통해 시작해 보는 것도 나쁘지 않으리라 생각됩니다.
|