버그 잡이

오브젝트(조영호 지음)를 보고.. 1장 객체 #객체지향 바이블 본문

독서

오브젝트(조영호 지음)를 보고.. 1장 객체 #객체지향 바이블

버그잡이 2020. 4. 3. 19:32

"분명 자바로 짰는데 객체지향은 어디있지?"

 

지난 나의 안드로이드 작품을 돌아보면서 가장 크게 느낀점이다.

나의 작품에는 끽 해봐야 메소드 분리 정도 있을뿐 객체 지향의 개념은 없었다.

그러던 중 우연히 오브젝트라는 책을 추천받았다.

객체 지향에 대해서 아주 심도있지만 쉽게 저술된 책이라고 한다.

 

 

"이 책은 객체지향 패러다임에 어느 정도 익숙하고, 프로그래밍 언어를 능숙하게 다룰 수 있으며, 실무 경험이 풍부한 독자들이 읽을 것이라고 생각하고 쓰여졌다. ...... 실무 경험이 부족한 상태하면 아무리 코드를 예로 들어 설명한다고 하더라도 추상적인 이론의 나열로밖에 보이지 않을 것이다." - 이 책의 대상 독자

 

 

 

후... 아직 나는 실무 경험이 없는데...

그래도 이왕 산거 조금이라도 읽어보자. 

 

 

 

0장 . 프로그래밍 패러다임

 

 

"간단히 말해서 우리가 어떤 프로그래밍 패러다임을 사용하느냐에 따라 우리가 해결할 문제를 바라보는 방식과 프로그램을 작성하는 방법이 달라진다." 4p
"프로그래밍 패러다임은 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유할 수 있게 함으로써 불필요한 부분에 대한 의견 충돌을 방지한다. 또한 프로그래밍 패러다임을 교육시킴으로써 동일한 규칙과 방법을 공유하는 개발자로 성장할 수 있도록 준비시킬 수 있다." 5p 

 

 

그렇다. 객체지향은 하나의 프로그래밍 패러다임이고 이를 알면 선배 개발자들이, 다른 개발자들이 어떤 생각을 가지고 코드를 짰는지 보고 쉽게 이해할 수 있을 것 같다.

 

 

 

 

1장. 객체, 설계

 

"모든 모듈은 제대로 실행돼야 하고, 변경이 용이해야 하며, 이해하기 쉬워야 한다."- 14p
"의존성은 변경에 대한 영향을 암시한다 ...... 우리의 목표는 어플리케이션의 기능을 구현하는데 필요한 최소한의 의존성만 유지하고 불필요한 의존성을 제거하는 것이다." - 16p
"개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것캡슐화라고부른다. 캡슐화의 목적은 변경하기 쉬운 객체를 만드는 것이다. 캡슐화를 통해 객체 내부로의 접근을 제한하면 객체와 개체 사이의 결합도를 낮출수 있기 때문에 설계를 좀 더 쉽게 변경할 수 있게 된다." - 20p
"훌륭한 객체지향 설계의 핵심은 캡슐화를 이용해 의존성을 적절히 관리함으로써 객체 사이의 결합도를 낮추는 것이다." -27p

 

 

우리는 코드를 깔끔하게 짜기 위해 모듈화를 한다. 그 연장선에서 등장한 것이 객체지향 개념이라고 생각한다. 하지만 이러한 객체지향 설계에서 객체간 의존성이 너무 강하면 오히려 변경이 어려운 더 복잡한 코드가 될 수 있다. 따라서 우리는 캡슐화를 통해서 적절한 의존성을 가지는 객체를 설계해야한다.

 

 

 

 

1장은 다행히도 나같은 비전공자 입문자도 읽을 수 있는 수준이었다.

설계에 대해서 경험이 없어 어떻게 적용할지에 대한 생각까지 이어지지는 않았지만 객체지향이란 무엇이고 왜 중요한 것인지 알게 되었다. 지금까지는 면접에 나온다고 하니까 그냥 한번 훑어본 개념이었는데 이렇게 흐름을 통해 이해할 수 있어서 좋았다. 

 

 

 

 

"우리는 오늘 완성해야 하는 기능을 구현하는 코드를 짜야 하는 동시에

                                                         내일 쉽게 변경할 수 있는 코드를 짜야한다."

- 35p

 

 

 

 

반응형
Comments