본문 바로가기

길게 쓰기/객체지향의 탄생 (공식)

정의와 목표의 전환3-한두깨 객체지향 프로그래밍 미리보기

한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기


책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다.


보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+



4) 관계의 의존성은 낮게 기능의 집중도는 높게

여기까지 읽었다면 이렇게 생각할 수 있기능 구현에만 집착하면 유연성이 훼손 될 수도 있고유연성이 어떤 건지도 대략 알겠다그렇다면 유연한 소프트웨어를 개발하려면 구체적으로 어떻게 해야 할까다행히 좋은 소프트웨어를 만드는 기준이 되는 원칙을 간결하게 한 문장두 가지 권고사항으로 정리할 수 있다.

 

‘관계의 의존성은 낮게, 기능의 집중도는 높게’

 

이것은 응집도는 높게결합도는 낮게와 같은 뜻이다. 정보처리 기사 이론을 공부할 때유독 객체지향이란 단어와 응집도는 높게결합도는 낮게라는 용어가 눈에 안 들어왔다그래서 표현을 더 직관적으로 수정하면서 아래처럼 순서도 바꿔보았다.

 

※ 높은 응집도(기능의 집중도)와 낮은 결합도(관계의 의존성) → 낮은 결합도, 높은 응집도

 

저자가 경험해 보니 객체지향에서는 기능보다 관계가 더 중요하다. 관계의 중요성은 <2장 고정관념의 전환>에서 설명하겠아무튼 우리는 소프트웨어를 개발할 때 위의 두 가지 원칙만 충실히 지키면 된다. 그러면 최대한 소프트웨어 유연성을 얻을 수 있다.

한편 기능의 집중도가 높다는 말은어떤 모듈이 되도록 하나의 작업 하도록 만들어졌다는 이다관계의 의존성이 낮다는 모듈의 기능을 수행하기 위해 다른 모듈에 얼마나 게 의존하느냐다.

공장을 예로 들어보겠다공장은 제작포장테스트관리재고 관리 등으로 분업화가 잘 되어 있어야 한다그러나  직원의 업무가 포장 했다가 테스트도 했다가 때로는 짐도 나르고상사의 개인적인 심부름도 했다가 수시로 공장 청소까지 한다산만해서 제대로 일하기 어려울 것이따라서  직원은 되도록 한 가지 일만 하면서 기능의 집중도를 높여야 하고쓸데없는 일에 의존하는 경우 낮춰야 한다즉 관계의 의존성과 기능의 집중도 사이에는 높은 상관관계가 있다관계의 의존성이 낮으면 저절로 기능의 집중도가 높아진다기능의 집중도가 높으면 관계의 의존성이 낮아진다.

객체지향으로 개발할 때 역시소프트웨어의 모듈은 하나의 일만 잘 수행해야 하고하나의 모듈이 다른 모듈에 의존하는 경우를 최대한 줄여야 한다.